0

我目前在我的模型中引用 HttpContext。这是好习惯吗?我应该只传递我需要的信息吗?

例如,在我的模型代码中:

public void function()
{
 string param = HttpContext.Current.Request.QueryString["param"];
 if(param == "myexpectations") { ...}
}

Should be changed to:

public void function(string param) //avoid hard reference this way??
{
 if(param == "myexpectations") { ...}
}
4

1 回答 1

1

HttpContext在您的模型中引用不是一个好习惯。您不希望模型和HttpContext. 除其他外,这将使您的模型非常难以测试。我肯定会选择你的第二个选择。

如果您在操作方法中检索查询字符串值,则无需使用HttpContext.Current.Request.QueryString. 您可以允许 ASP.NET 的绑定机制将查询字符串值绑定到您的操作方法中的参数。例如,如果这是您的 URI:

http://localhost/Home/TestQueryString?param=ThisIsATestValue

假设您的路由设置正确,您可以像这样创建控制器和操作,MVC 会将查询字符串值绑定"ThisIsATestValue"到参数param

public class HomeController : Controller
{
    public ActionResult TestQueryString(string param)
    {
        string fromHttpContext = HttpContext.Current.Request.QueryString["param"];

        // result will be set to true
        bool result = param == fromHttpContext;
        return new EmptyResult();
    }
}
于 2012-07-17T22:27:52.930 回答