我遇到了MVC路由问题。 我使用过这样的路线:
[Route("{selected}/{category}/{id}/{engineId}")]
public ActionResult SubCategories(string selected, int id, string category, string engineId)
{...}
,网址如下:http://localhost:50564/Audi-60-1.5/Suspensie/76/43423
但是现在,我需要用" - "来界定url参数。我能这样做吗?我对MVC路线没有太多经验,我也不知道如何做到这一点。 如果我改变路线是这样的:
[Route("{selected}-{category}-{id}-{engineId}")]
public ActionResult SubCategories(string selected, int id, string category, string engineId)
{...}
我遇到了各种麻烦,例如整个应用程序中的Session变为null,并且我得到了null引用异常。使用" /"分隔符我没有这个问题,一切正常。
答案 0 :(得分:0)
这是一个基本答案,仅包括控制器和操作,但已经过测试并可以工作。从测试中也不能包含-对于可选参数,最多可以使用。您还必须在启动应用程序时考虑是否正确读取了默认路由
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}-{action=Index}");
});
以下是使用-作为可选参数时的错误消息
RoutePatternException: In the segment '{controller=Redaction}-{action=Index}-{id?}', the optional parameter 'id' is preceded by an invalid segment '-'. Only a period (.) can precede an optional parameter.
这是示例网址
https://localhost:44365/Home-Index.DocumentId=1