【发布时间】:2017-01-31 23:03:13
【问题描述】:
我有一个 url http://localhost/Home/DomSomething?t=123&s=TX,我想将此 URL 路由到以下操作方法
public class HomeController
{
public ActionResult DoSomething(int taxYear,string state)
{
// do something here
}
}
由于查询字符串名称与操作方法的参数名称不匹配,因此请求不会路由到操作方法。
如果我将 url(仅用于测试)更改为 http://localhost/Home/DomSomething?taxYear=123&state=TX,那么它就可以工作了。 (但我无权更改请求。)
我知道 Route 属性可以应用于操作方法,并且可以将 t 映射到 taxYear 和 s 到 state。
但是我没有找到这个映射的正确的 Route 属性语法,有人可以帮忙吗?
【问题讨论】:
-
为什么不只是
public ActionResult DoSomething(int t,string s)? -
您始终可以在控制器操作中使用
Request.QueryString["t"]; -
如果您可以更改操作的参数名称,那么您应该按照 Stephen Muecke 的建议进行操作并更改名称以匹配查询字符串名称
-
查询字符串与(内置)路由完全无关。 MVC 框架使用value providers 向MVC 管道提供查询字符串信息。您可以通过创建自己的价值提供者来改变其行为。见this similar question。
标签: asp.net-mvc asp.net-mvc-routing