在ASP.NET MVC下你应该像在ASP.NET WebForms中那样选择QueryString参数吗?或[AcceptVerbs(HttpVerbs.Get)]
以某种方式使用声明?
只需使用动作上的参数即可接受查询字符串参数 - 即
public ActionResult Foo(string someValue, int someOtherValue) {...}
这会接受像这样的查询 .../someroute?someValue=abc&someOtherValue=123
除此之外,您可以直接查看请求以获得更多控制权.
我认为你在寻找的是
Request.QueryString["QueryStringName"]
并且您可以通过添加来访问视图 @
现在看看我的例子,我用QueryString生成了一个Url
var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';
listURL值是 /Sector/List?name=value'
什么时候queryString
是空的
listURL值是 /Sector/List
您始终可以使用Request.QueryString
Web表单等集合,但您也可以使MVC处理它们并将它们作为参数传递.这是建议的方式,因为它更容易,它将自动验证输入数据类型.
我建议使用控制器的ValueProvider属性,与UpdateModel/TryUpdateModel提取所需的路由,查询和表单参数的方式非常相似.这将使您的方法签名不会变得非常大并且经常变化.它还使测试更容易,因为您可以在单元测试期间向控制器提供ValueProvider.