【问题标题】:How to return a view from a partial view post to a Controller?如何将部分视图帖子中的视图返回到控制器?
【发布时间】:2012-09-28 19:03:44
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-partialview ajax.beginform


    【解决方案1】:

    我希望我没听错,并且您希望在回帖时显示您的更新。 在这种情况下,你可以试试这个:

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

    并将您的@using (Ajax.BeginForm()) 放入编辑结果中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-30
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多