MVC viewmodel构造函数

时间:2012-02-21 09:56:09

标签: asp.net-mvc

在viewmodel的构造函数中填充viewmodel的模型/变量是不错的做法?

例如:

public class ProgramViewModel
{
    public IEnumerable<Programme> ProgramList { get; set; }
    public string QuerystringAgeID { get; set; }

    public ProgramViewModel()
    {
        QuerystringAgeID = HttpContext.Current.Request.QueryString["QuerystringAgeID"];
    }
}

1 个答案:

答案 0 :(得分:6)

  

填充视图模型的模型/变量是一种好习惯吗?   viewmodel的构造函数?

取决于。

但是根据您展示的示例,答案是。你有一个模型绑定器应该这样做:

public class ProgramViewModel
{
    public IEnumerable<Programme> ProgramList { get; set; }
    public string QuerystringAgeID { get; set; }
}

然后:

public ActionResult Foo(ProgramViewModel model)
{
    // model.QuerystringAgeID will be automatically populated 
    // with the value of the QuerystringAgeID 
    // thanks to the default model binder
    ...
}

除此之外,您绝对应该避免在ASP.NET MVC应用程序中使用HttpContext.Current。使您的代码绑定到ASP.NET上下文,使得无法单独重用和单元测试。 ASP.NET MVC为您提供了这样的抽象:HttpContextBase,...