MVC如何在动态添加的局部视图上处理提交按钮

时间:2013-12-30 10:24:52

标签: asp.net-mvc-4

您好我刚刚开始MVC编程,所以请原谅我的noob问题。

我有一个带有下拉列表的索引视图。根据下拉值,我使用jquery在Index的ContentDiv中添加了部分视图'_create'。

$('#CreateButton').click(function (e) {
    $("#ContentDiv").load('/Controller/_Create?Id=' + $("#DropDownList1").val());
});

所以,现在我不知道如何在部分视图中提交按钮(_Create)

我的_create表单如下:

 @using (Html.BeginForm("_Create","controller", FormMethod.Post,
        new { id = "addFormData", name="addFormData" }))
    {
    ----------
    ----------
     <p>
            <input type="submit" value="Create" />
        </p>
}

控制器:

 [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult _Create(WorkFieldModel entity, FormCollection p_form)
            {
                addFormValuetoDB();
                return PartialView();
            }

还有一件事;如何在回发后维护动态添加的局部视图的视图状态。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您可以使用AJAX请求提交表单,以避免对服务器执行完整回发并丢失上下文:

$('#CreateButton').click(function (e) {
    var data = { id: $("#DropDownList1").val() };
    $("#ContentDiv").load('/Controller/_Create', data, function() {
        $('#addFormData').submit(function() {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function(result) {
                    alert('Thanks for submitting the form');
                }
            });
            return false;
        });
    });
});

由于您的HttpPost控制器操作返回了PartialView,您可以在表单提交的success回调中使用此信息,并将结果注入DOM中的某个位置。