У меня есть следующий Судо-кодкак сделать HttpPost ActionResult связывать только часть ViewModel
class viewModel
{
public ICollection<modelA> parentModel
public modelC formModel
}
class modelA
{
public int ID {get;set;}
public virtual Icollection<modelB> {get;set;}
}
class modelB
{
public int ID {get;set;}
public string SomeString {get;set;}
public virtual modelA ModelA {get;set;}
}
class modelC
{
public int ModelAID {get;set;}
public string SomeString {get;set;}
}
Зв модель представления содержит коллекцию As. Каждый A содержит коллекцию Bs и существует отдельная модель для отправки в виде формы: форма будет повторяться на странице, как только в каждом экземпляре A с A.ID, переданным в ModelAID в качестве скрытого поля. На странице допускается только одна публикация формы. Идентификатор полей формы - это formModel.ModelAID и .formModel.SomeString, поскольку они получены из не-родительского элемента viewModel.
Как заставить ActionResult связываться только с формойModel?
[HttpPost]
Public ActionResult Input(formModel vm)
{
... by default the view model being passed back is full VM, I only want the formModel so the post signature does not match
}
совершенен! именно то, что я искал. Для справки я также нашел это сообщение в блоге: [link] (http://code.lawrab.com/2012/05/using-bind-prefix-in-aspnet-mvc.html), в котором указывается, что если вы используете частичный рендеринг и передать часть viewModel в шаблон, тогда по умолчанию имя modelPart не заполняется в идентификаторы поля формы. Это нужно учитывать при рефакторинге кода –