[英]RouteLink empty Href
我將 MVC3 與 Razor 視圖引擎一起使用。 我想為 Href 使用某個 Route
以下是路線注冊,(路線似乎可以使用,我可以使用瀏覽器直接使用它)
routes.MapRoute(
"AddItem",
"{listAreaName}/{listSlug}/Add",
new { controller = "List", action = "AddItem" }
);
但 @Html.RouteLink 只是不起作用。 它為鏈接返回一個空的href
這是我的一些嘗試
@Html.RouteLink("Add New Item", "AddItem", new { controller="List", action="AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item1", "AddItem", new { controller = "List", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item2", "AddItem", new { action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item3", "AddItem", new { controller = "list", action = "additem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item4", "additem", new { controller = "List", action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item5", "additem", new { listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
@Html.RouteLink("Add New Item6", "AddItem", new { controller = "ListController", action = "AddItem", listAreaName = Model.ListAreaName, listSlug = Model.Slug })<br />
如果我錯過了路線名稱,它會生成工作鏈接,但它的格式不正確
我找到的大部分材料都是用於 v1 的預覽版。 這個問題解決了嗎?
有任何想法嗎?
在最后一個路由鏈接中你有一個錯誤,你不應該使用Controller
后綴:
@Html.RouteLink(
"Add New Item6",
"AddItem",
new {
controller = "List",
action = "AddItem",
listAreaName = Model.ListAreaName,
listSlug = Model.Slug
}
)
就其他人而言,它們都生成以下 url: /ListAreaName/Slug/Add
in ASP.NET MVC 3 RTM 假設您已設置默認路由並且您已添加問題中顯示的路由。
編輯
您的路線中只有一個元素可以省略默認值。 您沒有 listAreaName 或 listSlug 的默認值。 看到這個問題: asp mvc routing with two optional parameters
routes.MapRoute(
"AddItem",
"{listAreaName}/{listSlug}/Add",
new
{
controller = "List",
action = "AddItem",
listAreaName = "foo", // <-- add these
listSlug = UrlParameter.Optional
});
原來的
您的路線實際上並不包括 controller 和操作參數。 您是否嘗試過從路由值中省略它們(在請求中對路由進行解碼時會推斷出它們)。 我要做的另一件事是確保 model 實際上包含ListAreaName
和Slug
值。
@Html.RouteLink("Add New Item",
"AddItem",
new
{
listAreaName = Model.ListAreaName,
listSlug = Model.Slug
})<br />
此外,您真的應該使用 CSS 將這些樣式設置為塊級元素,而不是盡可能在其后添加<br/>
。
<style>
.block { display: block; }
</style>
@Html.RouteLink("Add New Item",
"AddItem",
new
{
listAreaName = Model.ListAreaName,
listSlug = Model.Slug
},
new { @class = "block" })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.