Меня интересует пара вариантов форм и частичных форм. Подтверждение находится на родительской странице, и я изменил то, что передаю в частичное представление. У меня есть родительское представление со связанной HomeViewModel (которая имеет открытые свойства Name и public Person Employee {get; set;}
1.) Сценарий 1: на главном экране есть что-то вроде следующего
@model MasterDetailSample.Models.HomeViewModel
@using (Html.BeginForm()) {
<div>
@{Html.RenderPartial("_PersonView", @Model);}
</div>
<input type="submit" value="Save" />
}
В этом сценарии я перехожу к частичному представлению _PersonView всего HomeViewModel. В частичном представлении _PersonView я должен ссылаться на свойство объекта HomeViewModel, то есть Person, через @ model.Employee.Name (в этом сценарии отправка выполняется в родительской форме (не в частичном представлении))
Когда я нажимаю «Отправить» в форме (POST) в контроллере, я должен получить доступ к свойству «Имя» сотрудника с помощью следующей модели.
Кажется, что это работает, но обратите внимание на следующий вариант 2 (где я только частично передаю объект Employee)
2.) Сценарий 2
В этом сценарии я хочу отправить объект Employee только в частичное представление. Снова форма начала и отправки находится на родительской форме.
Итак, из родительской формы у меня есть
@{Html.RenderPartial("_MasterView", @Model.Employee);}
и т. Д. В частичном представлении я ссылаюсь на свойство Name объекта Person через @ Employee.Name. Теперь, когда я отправляю форму в контроллере, объект Employee недоступен из связывателя автоматической модели. Я могу получить доступ к свойствам через formcollection, но не из параметра модели
т.е.
[HttpPost]
public ActionResult Index(ModelViewModel model) {
**//model.Employee is null!**
return View();
}
Почему ? (is model.Employee null) Я хотел бы, чтобы мое частичное представление принимало только объект типа Person, однако после отправки с родительской страницы свойство Employee имеет значение null. В частичном представлении я использую следующее в строке @model
@model MasterDetailSample.Models.Person
Мне бы хотелось, чтобы частичному объекту был нужен только объект Person для отправки на него, но я бы хотел отправить его в главной форме. Если я делаю это таким образом, я могу повторно использовать частичное представление в некоторых ситуациях, однако, если я должен отправить HomeViewModel, я значительно ограничил использование этого частичного представления. Итак, опять же, я хочу использовать Person только в качестве модели с частичным представлением, но мне нужно иметь возможность доступа к свойствам при отправке из родительского представления.
Можно ли это сделать? Если да, то как?
ТНХ