Asp.net mvc I';我试图从mvc5中的url向控制器传递一个值
在ASP.NET MVC 5中将字符串变量传递给控制器时遇到问题。据我所知,我的代码应该可以工作,但无论我做什么,控制器都只会收到一个空值 首先,我在默认路线上方有我的Asp.net mvc I';我试图从mvc5中的url向控制器传递一个值,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在ASP.NET MVC 5中将字符串变量传递给控制器时遇到问题。据我所知,我的代码应该可以工作,但无论我做什么,控制器都只会收到一个空值 首先,我在默认路线上方有我的route.config,以下是我的路线: routes.MapRoute( name: "Serial number", url: "serial/{letterCase}", defaults: new { controller = "Home", action = "Serial",
route.config
,以下是我的路线:
routes.MapRoute(
name: "Serial number",
url: "serial/{letterCase}",
defaults: new { controller = "Home", action = "Serial", letterCase="upper" }
);
这是我在家庭控制器中的简单代码
public ActionResult Serial(string letterCase)
{
var serial = "ASPNETMVC5ATM1";
if(letterCase == "lower")
{
return Content(serial.ToLower());
}
return Content(serial);
}
因此,从理论上讲,如果我浏览到url
home/serial/lower
,它应该接受较低的字符串,但它不起作用,我甚至尝试使用“home/serial?lower”,但也不起作用。您的路由定义说要匹配的url是serial/{lettercase}
。它没有提到任何关于控制器名称的内容!因此它将匹配yoursite.com/serial/lower
或yoursite.com/serial/anystring
,但不匹配
因此,使用当前的路由定义,您可以访问您的操作方法,而不需要url中的home(控制器名称)。这就是yoursite.com/serial/somestring
如果要使其使用home/serial/lower
url模式,则需要将控制器部分添加到路由定义中的url中
下面的命令将任何对home/serial/{anystring}
的请求定向到home控制器中的串行方法
routes.MapRoute(
name: "Serial number",
url: "home/serial/{letterCase}",
defaults: new { controller = "Home", action = "Serial",
letterCase="upper" }
);
此外,此特定管线定义应始终高于默认管线定义。顺序真的很重要。您的路由定义说要匹配的url是
serial/{lettercase}
。它没有提到任何关于控制器名称的内容!因此它将匹配yoursite.com/serial/lower
或yoursite.com/serial/anystring
,但不匹配
因此,使用当前的路由定义,您可以访问您的操作方法,而不需要url中的home(控制器名称)。这就是yoursite.com/serial/somestring
如果要使其使用home/serial/lower
url模式,则需要将控制器部分添加到路由定义中的url中
下面的命令将任何对home/serial/{anystring}
的请求定向到home控制器中的串行方法
routes.MapRoute(
name: "Serial number",
url: "home/serial/{letterCase}",
defaults: new { controller = "Home", action = "Serial",
letterCase="upper" }
);
此外,此特定管线定义应始终高于默认管线定义。顺序确实很重要。确保您已将此特定路线置于任何其他路线定义之前:
routes.MapRoute(
name: "Serial number",
url: "serial/{letterCase}",
defaults: new { controller = "Home", action = "Serial", letterCase="upper" }
);
现在,如果您调用
serial/lower
(和nothome/serial/lower
),您应该会得到预期的结果。确保您已将此特定路由放置在任何其他路由定义之前:
routes.MapRoute(
name: "Serial number",
url: "serial/{letterCase}",
defaults: new { controller = "Home", action = "Serial", letterCase="upper" }
);
现在,如果您调用serial/lower
(和nothome/serial/lower
),您应该会得到预期的结果