2009-06-16 76 views
0

有没有其他人有这个问题?我必须做错什么。ASP.Net MVC:等等...默认路由参数必须命名为id?

所以我设立了这样的错误路线:

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{error}", 
new { error = "" } 
); 

,并呼吁像:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() })); 

和控制器上:

public ActionResult Error(String error) 

简单吧?那么当这是实际运行,误差为null,尽管网址看起来像:

/共享/错误/ ThisIsTheError

但在错误方法错误参数为null。 (是的,我试过其他的词)

现在,如果我用'id'这个词取代所有的东西一切正常。

的Global.asax.cs

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{id}", 
new { id = "" } 
); 

重定向:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() })); 

共享控制器:

​​

ID是一个必须有所有路由字,如果你有一个默认路由考虑价值?

回答

5

你总是需要指定控制器和操作参数:

routes.MapRoute 
(
"SharedError", 
"Shared/Error/{error}", 
new { controller = "Shared", action="Error", error = "" } 
); 

我猜测,为什么使用ID为你工作的原因是因为你还注册了默认路由,其ID为控制器和操作的参数和默认值。

注意,如果你仍然有默认路由,确保您之前添加你的路线,否则会首先匹配另一个。

+0

对,但它应该是新的{controller =“Shared”,action =“Error”,error =“”} – CoderDennis 2009-06-16 23:31:03