我正在學習使用基本項目模板加上幾個例子的MVC 3的過程。事情進展順利,但現在我正在努力實現我的控制器,而且我遇到了一些問題。使用默認項目模板的基本MVC路由查詢
到目前爲止,我已經修改了_Layout.cshtml文件有定義了指定的路線新的鏈接:
<header>
<div id="title">
<h1>My MVC Application</h1>
</div>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.RouteLink("Contracts", "Contract")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
</ul>
</nav>
</header>
和我的global.asax.cs文件如下:
routes.MapRoute(
"Contract",
"Contract",
new { controller = "Contract", action = "List", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
這工作正常,因爲它從我的合同控制器返回預期的操作視圖。
但是我想修改這個來接受一個id到List動作中。我知道我需要改變List方法來接受一個參數,這裏沒有問題,但是它與路徑有關,以及如何將這個參數從_Layout.cshtml文件中的RouteLink傳遞到List方法。我嘗試了一些東西,但這一點真的讓我感到困惑。
我打算通過AccountController登錄的用戶傳遞一個id,但我會問另一個問題,以保持這個更consise。
非常感謝。
這是否意味着如果我不想讓參數顯示在我的URL中,那麼通過僅通過ActionLink傳入參數,默認路徑仍然可以工作? – XN16 2012-08-04 10:57:59
這是正確的。如果你需要更多的參數,那麼你會創建一個允許更多參數的單獨路由,或者將它們傳遞給查詢字符串。這樣,您的默認路線保持不變,未來的控制器會按預期繼續工作。 – 2012-08-04 11:00:38