0

所以我有一个带有文本框和保存按钮的局部视图“_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>
}

该视图与称为 index 的父视图一起存在(它还提供了部分视图所依赖的模型):

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

父视图名为 Index.cshtml,由一个简单的控制器操作提供。当我在局部视图中单击“保存”按钮时,它会转到相应控制器上的适当操作,但我不太确定如何将更新的模型数据返回到局部视图中。

在所有示例中,它是一个执行异步发布的表单,但 UpdateTargetId 以 a 为目标,然后填充某种类型的更新内容。这看起来非常简单明了。

我正在苦苦挣扎的是如何使用现有视图(_Customer)返回相同的表单以及更新的模型信息。基本上,它是一个 BeginForm,它以控制器操作的结果为目标,而不是其他不属于表单的 div。

我不想手动重建 _Customer 视图通过 MVC 框架为我执行的所有 HTML 并将其返回以进行渲染。我想我在将数据提交给控制器的部分视图中遇到了表单,然后需要一种方法让同一视图在从操作方法返回时重新绘制自身。

有任何想法吗?

4

1 回答 1

1

我希望我说得对,你想在回帖中显示你的更新。在这种情况下,你可以试试这个:

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

并把你@using (Ajax.BeginForm())的编辑结果。

于 2012-09-28T20:19:41.050 回答