Ajax将序列化的局部视图模型列表发布到控制器
我有一个index.cshtml页面,我在其中重新设计显示按钮上的局部视图,单击Ajax将序列化的局部视图模型列表发布到控制器,ajax,asp.net-mvc-5,controller,Ajax,Asp.net Mvc 5,Controller,我有一个index.cshtml页面,我在其中重新设计显示按钮上的局部视图,单击 <div id="SomeId"> @Html.Partial("_Data", Model.SampleData); </div> @Html.Partial(“_Data”,Model.SampleData); 主模型 public List<Data> SampleData{ get; set; } public List S
<div id="SomeId">
@Html.Partial("_Data", Model.SampleData);
</div>
@Html.Partial(“_Data”,Model.SampleData);
主模型
public List<Data> SampleData{ get; set; }
public List SampleData{get;set;}
局部视图模型
public class Data
{
public string Name { get; set; }
public string Code { get; set; }
public List<Hours> Hours { get; set; }
}
公共类数据
{
公共字符串名称{get;set;}
公共字符串代码{get;set;}
公共列表小时数{get;set;}
}
在另一个按钮save click上,我想将数据模型列表保存到DB。所以,我使用ajax调用从主视图传递更新的列表,并从控制器返回部分视图
OnSaveButtonClick: function () {
var url = "@Url.Action("SaveData", "ControllerName")";
console.log($('#SomeId').serialize());
$.ajax({
type: "POST",
url: url,
dataType: "html",
data: $('#SomeId').serialize(),
success: function (response) {
$('#SomeId').html(response);
}
});
}
[HttpPost]
public ActionResult SaveData(List<Data> sampleData)
{
//some code to call DB
return PartialView("_Data", sampleData);
}
onSaveButton单击:函数(){
var url=“@url.Action”(“保存数据”、“控制器名称”);
log($('#SomeId').serialize());
$.ajax({
类型:“POST”,
url:url,
数据类型:“html”,
数据:$('#SomeId')。序列化(),
成功:功能(响应){
$('#SomeId').html(响应);
}
});
}
[HttpPost]
公共操作结果保存数据(列出sampleData)
{
//一些调用DB的代码
返回PartialView(“_数据”,sampleData);
}
部分视图_Data.cshtml
@model IEnumerable<Data>
@using Model.Sheet
@{
var modelList = Model.ToList();
}
<table>
@if (modelList.Count > 0)
{
for (int item = 0; item < modelList.Count; item++)
{
<tr>
<td>
@Html.DisplayFor(modelItem => modelList[item].Name)
</td>
<td>
@Html.DisplayFor(modelItem => modelList[item].Code)
</td>
@if (modelList[item].Hours != null)
{
for (int eachItem = 0; eachItem < modelList[item].Hours.Count; eachItem++)
{
<td>
@Html.Hidden(string.Format("HHours_{0}_{1}", item, eachItem), @modelList[item].Hours[eachItem].Hours, new { id = string.Format("HHours_{0}_{1}", item, eachItem) })
@Html.TextBox(string.Format("Hours_{0}_{1}", item, eachItem), @modelList[item].Hours[eachItem].Hours, new { id = string.Format("Hours_{0}_{1}", item, eachItem) })
@Html.Label(string.Format("LHours_{0}_{1}", item, eachItem), "SomeLabel", new { id = string.Format("Hours_{0}_{1}", item, eachItem) })<br />
</td>
}
}
</tr>
}
}
@model IEnumerable
@使用Model.Sheet
@{
var modelList=Model.ToList();
}
@如果(modelList.Count>0)
{
对于(int item=0;itemmodelList[item].Name)
@DisplayFor(modelItem=>modelList[item].Code)
@如果(模型列表[项目].Hours!=null)
{
对于(int-eachItem=0;eachItem
}
}
}
}
我将控制器中的sampleData设置为null。如何将局部视图模型列表获取到控制器