控制器中的索引函数采用三个参数,比如“a”、“b”、“c”。目前,我可以将值传递给 url 中的那些参数,例如 action?a="1"&'b'=2&'c'=3。
我想以 action/"value" 或 action/b="value" 的形式将值发送到 url 中的参数“b”。我尝试在 Global.asax.cs 中编辑路由,但出现错误“找不到路径的控制器或未实现 iController”。对此问题的任何帮助将不胜感激
控制器中的索引函数采用三个参数,比如“a”、“b”、“c”。目前,我可以将值传递给 url 中的那些参数,例如 action?a="1"&'b'=2&'c'=3。
我想以 action/"value" 或 action/b="value" 的形式将值发送到 url 中的参数“b”。我尝试在 Global.asax.cs 中编辑路由,但出现错误“找不到路径的控制器或未实现 iController”。对此问题的任何帮助将不胜感激
您应该以这种方式将其构建到 global.asax 中的路由表中:
RouteTable.Routes.Add(new Route
{
Url = "[controller]/[action]/[a]/[b]/[c]",
Defaults = new { controller = "myController", action = "myAction", a = "1", b = "2", c = "3" },
RouteHandler(typeof(MvcRouteHandler)
});
为了分解它,Url 参数显示了预期 Url 的结构,defaults 参数提供了任何可能为空的默认值。请记住,这将始终期望路由myDomain.com/myController/myAction/1/2/3
或与结构相匹配的东西,例如myDomain.com/myController/myAction///
. 如果您需要这些值的不同子集,则需要相应地调整您的路线。此外,您需要确保这条路线在您的路线定义中出现得相当早。路线由它找到的第一个匹配路线确定,因此更复杂(更难到达)的路线应该总是提前,以允许默认路线捕捉任何错过的东西。
参考:http ://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx