【发布时间】:2011-11-15 00:59:13
【问题描述】:
我有一个区域注册为:
public override void RegisterArea(AreaRegistrationContext context) {
context.MapRoute("CPanel_default",
"CPanel/{controller}/{action}/{id}/{*urlData}",
new { id = UrlParameter.Optional, urlData = UrlParameter.Optional });
}
这条路线打算填满多个url:
- /cpanel/home/index
- /cpanel/entity/edit/20
- /cpanel/entity/edit/20/abitrary-url-data
Haack 的路由调试器向我展示了该路由以这种能力运行。但是,我用于生成操作链接的代码最近发生了故障,我无法找出故障的原因。
正在使用以下代码生成操作链接:
public static MvcHtmlString CpanelLink(this HtmlHelper @this, string linkText,
string actionName, string controllerName, string areaName = "CPanel") {
return @this.ActionLink(linkText,
actionName, new { controller = controllerName, area = areaName });
}
据我所知,这应该说明区域路线中的所有必填字段。调试显示 CpanelLink 正在返回 <a href="">...</a>,一个没有任何内容的链接。
编辑
其他故障排除发现路由参数 {*urlData} 正在杀死 Html.CpanelLink。减少到“CPanel/{controller}/{id}”的路由可以解决问题,但会破坏依赖于 urlData 参数的 url。
【问题讨论】:
标签: asp.net-mvc routing asp.net-mvc-areas