我在.cshtml中有如下所示的列表
@using (Html.BeginForm("About","Home"))
{
<div id="Test">
<table id="DeptIds">
@for (int i = 0; i <= @Model.Count()-1;i++ )
{
<tr>
<td>
@Html.TextBoxFor(x => x[i].DeptId)
</td>
<td>
@Html.TextBoxFor(x => x[i].DeptName)
</td>
</tr>
}
</table>
<input type="button" value="HitMe" onclick="Save()" />
</div>
}
<script>
function Save()
{
$.ajax({
type: 'POST',
url: '@Url.Action("About")',
data: $("#Test").serialize(),
success: function (data) {
alert(data);
$('.tampil_vr').text(data);
}
});
}
</script>
Save函数将执行ajax方法并序列化所有数据并传递给控制器。
控制器代码:
[HttpPost]
public ActionResult About(List<Dept> obj)
{
ViewBag.Message = "Your app description page.";
return View();
}
当我执行obj为null但如果我在obj中更改type =“Submit”,我将获得List数据。那么如何在ajax调用中填充obj。
答案 0 :(得分:3)
您需要序列化表单而不是div
@using (Html.BeginForm("About","Home",FormMethod.Post,new {id="frm_Test"}))
{
.....
...
}
在脚本中提供要序列化的表单的ID
<script>
function Save()
{
$.ajax({
type: 'POST',
url: '@Url.Action("About")',
data: $("#frm_Test").serialize(),
success: function (data) {
alert(data);
$('.tampil_vr').text(data);
}
});
}
</script>