如何在MVC中访问查询字符串

时间:2012-08-29 23:23:33

标签: asp.net-mvc

我正在使用以下方式获取查询字符串:

public ActionResult Index(int id)
{
  var queryString = Request["myQueryString"];
}

然后我看了看:

help-testing-mvc3-controller-that-accesses-querystring

哪个州:

直接使用HttpRequest是违​​反MVC的设计模式的。您可以将操作的查询字符串变量作为参数访问。

我真的不明白这一点。我对设计模式做了什么?如果这是为什么,那怎么可能呢?

3 个答案:

答案 0 :(得分:1)

它打破了模型绑定的概念。单元测试也很复杂,并试图为测试新建HttpContext。如果它只是一个参数,你可以传递值。

答案 1 :(得分:1)

首选(也更容易阅读)的方法是:

public ActionResult Index(int id, string myQueryString)
{
    ...
}

答案 2 :(得分:0)

您的操作方法应该从您的表单提交大部分数据。 MVC的优势之一是它内部的模型绑定。看看这个页面,因为它有一个很好的例子:

http://www.codeproject.com/Articles/159749/ASP-NET-MVC-Model-Binding-Part1

您可以接受文字(字符串,bool等),但也可以在操作方法中接受强类型对象。