美好的一天!
我正在使用ASP.NET MVC 2和T4MVC,似乎有些代码魔术正在发生
当我将此添加到路线表时:
routes.MapRoute(
"Login",
"login/",
MVC.Profile.Login()
);
当我在视图中写这样的内容以生成传出URL时,框架如何知道我希望应用此规则:
<%: Url.Action(MVC.Profile.Login() %>
如果我对同一控制器/操作对有多个不同的规则(具有不同的参数),该怎么办?哪一个会被选中?是否有任何关于此行为的良好描述?
提前致谢!
答案 0 :(得分:1)
它按照您定义的顺序匹配路径模式。这就是为什么你有默认模式作为最后一个。一旦找到匹配的模式,它就会停止查看。
修改强>
路由匹配期间将忽略参数。选择控制器方法后,mvc使用模型绑定将参数分配给方法变量。
如果您可以解释您希望使用哪种类型的网址结构,我们可以为您提供更多帮助。
答案 1 :(得分:1)
我建议您帮助您了解这项工作如何将T4MVC所做的魔力与MVC本身在封面下所做的事情分开。
用T4MVC写这个:
routes.MapRoute(
"Login",
"login/",
MVC.Profile.Login()
);
这相当于用直接的MVC写这个:
routes.MapRoute(
"Login",
"login/",
new { controller = "Profile", action = "Login" }
);
在视图中:
Url.Action(MVC.Profile.Login())
与
相同Url.Action("Login", "Profile")
T4MVC为您提供强类型/智能感知的好处,但最终它的功能与直接MVC相同。
希望这有助于澄清一些事情:)
答案 2 :(得分:-1)
您的示例不是有效的MVC,您通常会传递控制器名称,操作和任何其他参数,然后路由引擎将使用所有信息来确定使用哪条路线,您定义的路线越多,信息越多它可能需要确定你想要匹配的那个