Как вернуть представление из поста частичного просмотра в контроллер?

Итак, у меня есть частичное представление «_Customer» с текстовым полем и кнопкой «Сохранить». В настоящее время код частичного просмотра у меня такой:

@model CompositeViews.Models.Customer

@using (Ajax.BeginForm("Edit", "Customer", new AjaxOptions { HttpMethod = "Post",     InsertionMode = InsertionMode.Replace, UpdateTargetId = "customerDiv" }))
{
<div id="customerDiv">
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Customer</legend>

        @Html.HiddenFor(model => model.CustomerId)

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>

        <p><input type="submit" value="Save" /></p>
    </fieldset>
</div>
}

представление живет с родительским представлением, называемым индексом (который также предоставляет модель, от которой зависит частичное представление):

@model CompositeViews.ViewModels.CompositeViewModel
<h2>Index</h2>
@Html.Partial("_Customer", Model.Customer)

Родительское представление называется Index.cshtml и передается простым действием контроллера. Когда я нажимаю кнопку «Сохранить» в частичном представлении, оно переходит к соответствующему действию на соответствующем контроллере, но я не слишком уверен, как вернуть обновленные данные модели НАЗАД в частичное представление.

Во всех примерах это форма, которая делает асинхронную публикацию, но UpdateTargetId нацелен на a, который затем заполняется некоторым типом обновленного контента. Это кажется довольно прямолинейным и простым.

Я борюсь с тем, как вернуть ту же форму с обновленной информацией о модели, используя существующее представление (_Customer). По сути, это BeginForm, который нацеливается на результат действия контроллера, а не на какой-то другой div, не являющийся частью формы.

Я бы хотел, чтобы НЕ приходилось вручную перестраивать весь HTML-код, который представление _Customer делает для меня через структуру MVC, и возвращать его для рендеринга. Я предполагаю, что я застрял с формой в частичном представлении, отправляющем данные в контроллер, а затем нуждающимся в способе, чтобы это же представление перерисовывалось при возврате из метода действия.

Любые идеи?


person Michael McCarthy    schedule 28.09.2012    source источник


Ответы (1)


Надеюсь, я вас правильно понял, и вы хотите показать свое обновление в посте. В этом случае вы можете попробовать следующее:

<div id="customerDiv">
  @Html.RenderAction("Edit", "Customer", Model)
</div>

и поместите @using (Ajax.BeginForm()) в результат редактирования.

person Dima    schedule 28.09.2012