ASP.Net 视:所以等待...默认的路线参数具有名的身份证吗?
-
05-07-2019 - |
题
有其他任何人都有这个问题?我必须要做的事情是错误的。
所以我设置了一个路线的错误这样的:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { error = "" }
);
和呼吁,如:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));
和控制器:
public ActionResult Error(String error)
简单吧?当这实际上是运行,错误是null尽管url看起来像:
/Shared/错误/ThisIsTheError
但是错误参数在错误的方法是空。(是的我已经尝试过其他的单词)
现在,如果我取代所有的字'id'的一切工作。
全球性的。asax.cs
routes.MapRoute
(
"SharedError",
"Shared/Error/{id}",
new { id = "" }
);
重定向:
return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));
共享控制器:
public ActionResult Error(String id)
是id必须有一个字的所有路线,如果你有一个默认的路线在一个价值?
解决方案
你总是需要指定的控制和操作参数:
routes.MapRoute
(
"SharedError",
"Shared/Error/{error}",
new { controller = "Shared", action="Error", error = "" }
);
我猜测的理由为什么使用id为你工作是因为你已经默认的路线,仍注册,其中有id作为一个参数和默认值控制和采取行动。
注意,如果你仍然有的默认的路线,让你加入你的路线 之前 它,否则它将匹配的另一个第一。
不隶属于 StackOverflow