路由在ASP中是如何工作的.净MVC4
本文关键字:工作 MVC4 何工作 ASP 路由 | 更新日期: 2023-09-27 17:54:31
我正在开发一个ASP。NET MVC4应用程序,我是新来的。我有两个MapRoutes
用于路由。
routes.MapRoute("Char",
"ABC/Alpha/{number1}",
defaults: new { Controller = "ABC", action = "Alpha" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id=UrlParameter.Optional }
);
我没有给MapRoutes
中的number1
分配任何默认值。但我知道它是强制性的,因为它在URL路径中。
如果我没有提供任何参数在url(当我运行应用程序),我应该得到一个错误,但我没有。
。:
http://localhost:32066/ABC/alpha/value---- getting desired output.
http://localhost:32066/abc/alpha/ ---- expected an error but there is no error.
有人能帮我吗?
不匹配第一条路由,但匹配第二条路由。所以它得到controller/action = ABC/Alpha, Id是可选的
Kyle是对的,第二个路由(这是全局默认的)匹配的url是有效的,因此你不会看到一个错误。我猜你正在跟随微软官方培训视频之一,该视频模拟了由于错误的url不尊重路由路径而导致的请求错误。若要模拟错误,请删除默认路由,编译项目并运行。只有这一次指定您列出的第二个url,您应该看到错误。
从上到下检查路由路径,在第一个例子中
{Controller}/{Action}/{ID}
是由你传递的(这里必须提到id),所以First路由可以工作
但是Magic你期望第二种情况抛出错误,它应该有,因为如果你的Action是
public ActionResult ActionName(int id)
{
//some Code
}
那么肯定会抛出类似Action
的错误"Cannot convert null to 'int' because it is a non-nullable value type"
,我很确定你的Action会有
public ActionResult(int? id)
{//Some Code here}
或
Public ActionResult()
{
//Some Code here
}