Pro*_*ool 0 asp.net-mvc routes
其他人遇到过这个问题吗?我必须做错事.
所以我正在为这样的错误设置一条路线:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { error = "" }
);
Run Code Online (Sandbox Code Playgroud)
并呼吁:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));
Run Code Online (Sandbox Code Playgroud)
在控制器上:
public ActionResult Error(String error)
Run Code Online (Sandbox Code Playgroud)
简单吧?好吧,当它实际运行时,尽管url看起来像是错误,但错误为空:
/共享/错误/ ThisIsTheError
但是Error方法中的error参数为null.(是的,我尝试过其他的话)
现在,如果我用"id"这个词替换所有内容,一切正常.
的Global.asax.cs
routes.MapRoute
(
"SharedError",
"Shared/Error/{id}",
new { id = "" }
);
Run Code Online (Sandbox Code Playgroud)
重定向:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));
Run Code Online (Sandbox Code Playgroud)
共享控制器:
public ActionResult Error(String id)
Run Code Online (Sandbox Code Playgroud)
如果你有一个默认路由值,那么id是否必须包含所有路由的字?
您始终需要指定控制器和操作参数:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { controller = "Shared", action="Error", error = "" }
);
Run Code Online (Sandbox Code Playgroud)
我猜测使用id的原因是因为你有默认路由仍然注册,它有id作为参数和控制器和动作的默认值.
请注意,如果您仍有默认路线,请确保在其之前添加路线,否则它将首先匹配另一条路线.
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |