Как передать родительскую модель изнутри частичного вида - PullRequest
0 голосов
/ 17 июня 2011

Я рендеринг четного представления, который имеет кнопку отправки с действием HttpPost в контроллере. Этот метод действия нуждается в родительской модели в качестве параметра. Есть ли способ отправить родительскую модель в качестве первого параметра из частичного представления?

Основной вид -> файл aspx, который имеет модель ParentModel

Частичное представление -> ascx файл с моделью ParentModel.ChildModel

Действие контроллера -> MyActionName (модель ParentModel, int direction, int user)

Если я оставлю метод как HttpPost, то по умолчанию родительская модель будет передана, но тогда я не смогу отправить 2-й и 3-й параметр, поскольку их значения определяются во время выполнения, и это не свойства дочерней модели. например Параметр направления, который указывает, нажал ли пользователь кнопку «Следующая / Предыдущая». В этом случае кнопки «Вперед» и «Предыдущая» вызывают один и тот же метод действия (отправка MultipleAction)

Дополнительная информация: Моя родительская модель имеет коллекцию дочерней модели. Я перебираю эту коллекцию и вызываю RenderPartial для каждого элемента. Поэтому я не могу передать эту родительскую модель непосредственно в мое частичное представление (которое является поведением по умолчанию).
Любые предложения, пожалуйста? Спасибо ..

1 Ответ

1 голос
/ 17 июня 2011

Вы можете обернуть все эти частичные элементы в HTML <form>, чтобы все значения также отправлялись на сервер при публикации этой формы:

<% using (Html.BeginForm()) { %>

    <%= Html.TextBoxFor(x => x.SomePropertyOfParent) %>
    <%= Html.TextBoxFor(x => x.SomeOtherPropertyOfParent) %>

    <%= Html.EditorFor(x => x.Children) %>

    <input type="submit" value="OK" />
<% } %>

Я использую шаблон редактора вместо частичных для Children коллекция.Пользовательский шаблон редактора будет автоматически отображен для каждого элемента этой дочерней коллекции и предоставит любые поля ввода, позволяющие изменить его.

Затем, когда форма будет окончательно отправлена, все свойства, необходимые связующему модели для восстановления ParentModel будет отправлено на сервер.Что касается направления и пользовательских параметров, я бы сделал их частью модели родительского представления, чтобы мое действие контроллера POST выглядело так:

[HttpPost]
public ActionResult MyActionName(ParentViewModel model)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...