[英]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.