【发布时间】:2013-04-30 06:07:40
【问题描述】:
我有两条不明确的路线,都在同一个 MVC 区域内:
Default
{controller}/{action}/{id}
controller = "Home"
action = "Index"
id = Optional
SettingsRoute
Settings/{controller}/{action}
action = "Index"
我希望 MVC 默认使用 Default 路由,当路由按照上面指定的顺序时它会这样做。所以这...
Controller: WelcomeController
Action: Login
using( Html.BeginForm() ) { }
...生成此 HTML
<form action="/Welcome/Login" method="post"></form>
到目前为止,一切都很好。
但是,当我有一个看起来像这样的锚时:
<a href="Settings/AppSettings">Application settings</a>
...它被Default 路由捕获为Controller = Settings, Action = AppSettings 而不是SettingsRoute 路由。
当我重新排序路线时,SettingsRoute 出现在 Default 之前,然后我的 Html.BeginForm() 调用看起来像这样:<form action="Settings/Welcome/Login"> 这根本不是我想要的。
有什么解决办法吗?
【问题讨论】:
-
如果两者都在同一个区域内,那么当它的定义与默认路由相同时,为什么需要额外的路由?问题是您包含了
{controller}部分,并且引擎将Settings作为路线的附加部分。
标签: asp.net-mvc routes