MVC部分页面从JQuery UI对话框提交

时间:2014-09-11 16:20:33

标签: javascript jquery ajax asp.net-mvc forms

我正在尝试提交通过部分页面加载的ajax表单。提交来自在JQuery UI对话框上创建的按钮。表单数据包含在请求中,但是当我单步执行服务器端的代码时,视图模型没有填充数据。

加载部分和加载完成后的Javascript会创建对话框。

$('#test').load('@Url.Action("NewIntegrationLevel", "IntegrationLevelConfig", null, Request.Url.Scheme)', 
                        function() {
                            var dialog = $('#addEditForm');
                            dialog.dialog({
                                resizable: false,
                                modal: true,
                                width: 500,
                                title: 'New Integration Level',
                                buttons: [{
                                    text: 'Save',
                                    click: function(e) {
                                        e.preventDefault();
                                        $('#addEditForm').submit();
                                        dialog.dialog('close');

                                    },
                                    type: 'submit',
                                    form: 'addEditForm'
                                },
                                    {
                                        text: 'Close',
                                        click: function(e) {
                                            e.preventDefault();
                                            dialog.dialog('close');
                                        }
                                    }                               
                                ]
                            });
                        });

我的部分页面:

@model Zodiac.Cmt.UI.Models.IntegrationLevelConfigViewModel


@using (Ajax.BeginForm("Save", "IntegrationLevelConfig", FormMethod.Post, null, new { id = "addEditForm" }))
{

<div id="addEdit-integration-dialog">
    <div>
        <div>
            @Html.LabelFor(model => model.Name)
            @Html.TextBoxFor(model => model.Name)
        </div>
    </div>
</div>

}

服务器端代码:

[HttpPost]
    public ActionResult Save(IntegrationLevelConfigViewModel viewModel)
    {
        return PartialView("_AddEditIpl", viewModel);
    }

由于JQuery对话框在表单之外创建了提交按钮,因此我正在使用&#34;表单&#34;按钮上的属性,以便它知道要提交哪个表单。

这是提交页面后请求的样子:

web request

那么,为什么视频模型不会在服务器端填充表单数据?

视图模型:

public class IntegrationLevelConfigViewModel
{
    [Description("Name")]
    public string Name;
}

1 个答案:

答案 0 :(得分:1)

我明白了。

在我的视图模型中

public string Name;

需要更改为:

public string Name {get;set;}