在我的佈局頁,到彌補我的網站的主要欄目的鏈接呈現與呼叫這樣的:Url.Action重用路線數據時,我不希望它
@SiteSectionLink("index", "blog", "blog")
凡SiteSectionLink
是一個輔助,看起來像這樣:
@helper SiteSectionLink(string action, string controller, string display)
{
<li>
<h1>
<a class="site-section" href="@Url.Action(action, controller)">@display</a></h1>
</li>
}
在實際的博客頁面,各個環節也請參閱「索引」行動也是指定一個日期參數(如「博客/ 4-2011」或「博客/ 2010「),用於按日期過濾帖子。除此之外,還有一個可選的postID
參數用於引用特定的帖子。
爲了實現這個目標,我有以下途徑:
routes.MapRoute(
"Blog",
"blog/{date}/{postID}",
new
{
controller = "blog",
action = "index",
date = UrlParameter.Optional,
postID = UrlParameter.Optional
}
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
現在的問題是,當我點擊了一個鏈接,是像「博客/ 11-2010」或「博客/ 11- 2010/253「,那麼我的佈局頁面中的鏈接現在指的是我的博客也當我希望它只鏈接到」blog /「而不是」blog/11-2010「時,指的是相同的URL。
如果我改變SiteSectionLink幫手在空明確地傳遞了date
和postID
這樣的:
<a class="site-section" href="@Url.Action(action, controller,
new { date = (string)null, postID = (int?)null})">@display</a></h1>
當前的路由值仍在使用,但現在它看起來像「?博客日期= 11-2010」 。
我看到this類似的問題,但接受的答案不爲我工作,我不首先使用ActionLink
我懷疑ActionLink
將使用Url.Action
引擎蓋下。
謝謝你的改進分裂路線,你說得對,有兩個可選配只會引起頭痛。 – JulianR
第二個想法是,我將其標記爲答案,因爲這是解決它的分裂問題,再加上對SiteSectionLink的重載。 – JulianR