Нужно передать модель в представление ASP.NET MVC, и я хочу сделать это через мастер-страницу. Мне нужно будет написать форму, которая будет создавать экземпляр модели и передавать её в контроллер через Action метод. Я хочу сделать эту форму в частичном представлении, потому что это представление будут подключать все страницы на моём сайте.
Подскажите пожалуйста, как это сделать?
Дарт Вейдер правильно написал - никак. Потому что мастер-страницы (они же - частичные представления) - не самостоятельные единицы проекта, а всего лишь шаблоны, подключаемые к разным представлениям. Они не могут принимать, содержать или обрабатывать модели.
Как вариант решения проблемы можно вставить в частичное представление форму через Html.BeginForm, и передать данные из этой формы в контроллер, где уже собрав эти все данные можно склепать себе необходимый экземпляр класса и далее оперировать с ним, но только из контроллера.
Как вариант ещё можно сделать следующим образом:
public class MyController : Controller
{
public MainLayoutViewModel MainLayoutViewModel { get; set; }
public MyController()
{
this.MainLayoutViewModel = new MainLayoutViewModel();//has property PageTitle
this.MainLayoutViewModel.PageTitle = "my title";
this.ViewData["MainLayoutViewModel"] = this.MainLayoutViewModel;
}
}
Вот как в данном случае будет выглядеть частичное представление:
@{
var viewModel = (MainLayoutViewModel)ViewBag.MainLayoutViewModel;
}