所以我有一个带有文本框和保存按钮的局部视图“_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 并将其返回以进行渲染。我想我在将数据提交给控制器的部分视图中遇到了表单,然后需要一种方法让同一视图在从操作方法返回时重新绘制自身。
有任何想法吗?