最初の MVC4 プロジェクトで、バッファにヒットしました...
このように自分のサイトページを参照できるようにしたいです。
メニュー/サブメニュー/ドキュメント/ID
ここで、ID 値はオプションであり、最後にタグ付けされた他のものはすべて、モデルはドキュメント部分をテキストとして処理します。
HOME/WELCOME/当店へようこそ
だから私はルートを設定しました(ルートは1つしかありません)
routes.MapRoute(
name: "Default",
url: "{menu}/{submenu}/{document}/{id}",
defaults: new {
controller = "Page",
action= "Data",
menu = "",
submenu = "",
document = "",
id = ""}
私はコントローラーを持っています。
public class PageController : Controller
{
// Default view option for documents
public ActionResult Data(string menu, string submenu, string document, string parameters)
{
// Set the View to use rather than it default;
string thisView = "Data";
return View(thisView);
}
}
_MenuPartial.cshtml ファイルを参照する _Layout.cshtml ファイルがあります。
@model MyNameSpace.Models.PageModel
<ul>
@foreach (var item in Model.Menus.MainMenu)
{
<li>@Html.ActionLink(item.Label, "Page", "Data", new
{
menu = "MENU",
submenu = "SUBMENU"
},
null
)
</li>
}
</ul>
上記はすべて、メインメニューを正しいテキストなどで動的に書き出します。
ただし、ラベルをクリックすると、ルートは PageControllers Data 関数に問題なくマップされているように見えますが、文字列メニュー、文字列サブメニュー、文字列ドキュメント、文字列パラメーターの値は "" または null です。
URL を変更すると、正しく渡されます。
これは私が何をすべきかの単なる誤解だと確信しています。誰か親切な魂がそれを見つけたら、私は離れて走り出すことを願っています!
ありがとうアンディ