質問
MVCアプリで次の2つのルートが定義されています。 現在、「MVCビューコンテンツページ」が2つあります。定義済み
/ShowName/NameById
/ShowName/Index
ただし、これら2つのページのコンテンツは同一ですか? 2つのルートで同じコンテンツページを共有することは可能ですか?そうでない場合は、a)両方のルートに対して単一のルールを作成するか、b)データを表示するために両方のコンテンツページ間で共有するユーザーコントロールを作成する必要がありますか?
routes.MapRoute(
"NameById",
"Name/{theName}/{nameId}",
new
{
action = "NameById",
controller = "ShowName",
theName = "Charley"
}
,new { nameId = @"\d+" }
);
routes.MapRoute(
"ShowName",
"Name/{theName}",
new
{
action = "Index",
controller = "ShowName",
theName = "Charley"
}
);
編集 以下の回答を読んでおり、次のアクション結果メソッドがあります。メソッドの1つ(インデックスなど)を削除した場合、ルートを1つのルートに書き換える方法を教えてください
public ActionResult Index(string theName)
public ActionResult NameById(string theName, int? nameId)
だから、次の作品はURLの作品ですか?
/Name/Charley
/Name/Charley/11234
解決
本当に2つの異なるルートが必要ですか?インデックスルートのパターンを作成できます
Name/{theName}/{nameId}
そして nameId をアクションへのnull入力可能にします。次に、nameIdに値があるかどうかを確認し、それに応じて動作するロジックをアクションに追加します。
他のヒント
2つのアクションが後で変更された場合に備えて、ページの詳細領域の部分ビューを作成して、2つのアクションを分離できます。または、あなたはただ
return View("DetailView", model);
ただし、2つのコントローラーアクション間を管理するための追加の文字列を導入できます。 MVCはアクション名によるオーバーロードをサポートしていないので(引数のないGET / POSTのペアがない限り)、{nameId}パラメーターをチェックして、使用する前に空かnullかを確認できます。
所属していません StackOverflow