在viewmodel的构造函数中填充viewmodel的模型/变量是不错的做法?
例如:
public class ProgramViewModel
{
public IEnumerable<Programme> ProgramList { get; set; }
public string QuerystringAgeID { get; set; }
public ProgramViewModel()
{
QuerystringAgeID = HttpContext.Current.Request.QueryString["QuerystringAgeID"];
}
}
答案 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,...