所以我有一个局部视图“_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的目标是一个然后填充了某种类型的更新内容。这似乎很简单直接。
我正在努力的是如何使用现有视图(_Customer)使用更新的模型信息返回相同的表单。基本上,它是一个BeginForm,它以控制器动作的结果为目标,而不是其他不属于表单的div。
我不想手工重建_Customer视图通过MVC框架为我做的所有HTML,并返回它进行渲染。我想我在部分视图中坚持将表单提交给控制器,然后需要一种方法让同一个视图在从action方法返回时重新绘制。
有什么想法吗?
答案 0 :(得分:1)
我希望我能帮到你,你希望在帖子上显示你的最新消息。 在这种情况下,你可以试试这个:
<div id="customerDiv">
@Html.RenderAction("Edit", "Customer", Model)
</div>
并将@using (Ajax.BeginForm())
放入编辑结果中。