Это хорошая практика для заполнения модели/переменные в ViewModel в конструктор ViewModel?
Это зависит.
Но с примером, который вы показали, отвечает no. У вас есть модель связующего, который должен сделать это:
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
...
}
В дополнение к этому вы должны абсолютно избегать использования HttpContext.Current
в приложении ASP.NET MVC. Делает ваш код привязанным к контексту ASP.NET, что делает невозможным повторное использование и единичный тест в изоляции. ASP.NET MVC предоставляет вам абстракции для этого: HttpContextBase, ...