在MVC视图中使用jQuery添加Html.BeginForm



我有一些信息框,它们都是通过Ajax在我的控制器中调用函数然后构建HTML加载的。

我需要为这些信息框提供一些编辑功能,这些功能将简单地用表单替换静态文本。我知道我将如何在常规HTML中执行此操作,但我想使用Html.BeginForm,以便我可以在控制器中处理它。

这就是我想在我的表单中加载的方式(它与加载静态信息框的代码几乎相同)

$.ajax({
    url: '@Url.Action("GetCustomerInfoById/")' + id,
    type: 'post',
    traditional: true,
    dataType: 'json',
    success: function (result) {
        $.each(result.CustomerInfo, function (index, customerInfo) {
            $('#infoBox' + customerInfo.ID).html(/* html form goes here */);
        });
    }
})

这就是我想构建表单的方式

@using (Html.BeginForm("Index", "Customer", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @model CustomerInfo
    <div class="form-group">
        @Html.TextAreaFor(m => m.InfoText, new { @class = "form-control col-12-md", @style = "max-width: none", @rows = "5" })
    </div>
    <div class="form-group">
        @Html.DropDownListFor(m => m.InfoTypeId, new SelectList(InfoTypeList, "Value", "Text"), new { @class = "form-control", @style = "max-width: none" })
    </div>
    <input type="submit" value="Gem" class="btn btn-primary" />
}

您可以通过使用 customerInfo.ID 作为参数创建新的控制器 ActionMethod 来实现此目的,这会将窗体呈现为分部视图。

需要

为表单提供一个隐藏的 ID 字段,以便在表单帖子发生时可以彼此区分。

使用循环内的其他$.ajax()调用调用新的 ActionMethod,每个调用都有一个将结果传递到 .html() 语句中的成功函数。

最新更新