有其他任何人都有这个问题?我必须要做的事情是错误的。

所以我设置了一个路线的错误这样的:

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作为一个参数和默认值控制和采取行动。

注意,如果你仍然有的默认的路线,让你加入你的路线 之前 它,否则它将匹配的另一个第一。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top