我正在尝试提交通过部分页面加载的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;按钮上的属性,以便它知道要提交哪个表单。
这是提交页面后请求的样子:
那么,为什么视频模型不会在服务器端填充表单数据?
视图模型:
public class IntegrationLevelConfigViewModel
{
[Description("Name")]
public string Name;
}
答案 0 :(得分:1)
我明白了。
在我的视图模型中
public string Name;
需要更改为:
public string Name {get;set;}