0

我正在使用以下方法取回查询字符串:

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

然后我看了看:

帮助测试-mvc3-controller-that-accesses-querystring

其中指出:

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

我真的不明白这一点。我所做的是否违反了设计模式?如果是,为什么会这样,怎么做?

4

3 回答 3

1

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

于 2012-08-29T23:24:55.903 回答
1

首选(且更易于阅读)的方法是:

public ActionResult Index(int id, string myQueryString)
{
    ...
}
于 2012-08-30T03:29:22.500 回答
0

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

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

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

于 2012-08-29T23:26:54.053 回答