我在视图中添加了一个按钮.单击此按钮时,将添加部分视图.在我的表单中,我可以添加尽可能多的局部视图.提交此表单数据时,我无法将所有部分视图数据发送到控制器.我创建了一个具有所有属性的不同模型,并且我已经将该模型的列表添加到我的主模型中.任何人都可以给我一些技巧,以便我可以将所有部分视图内容发送到我的控制器?
在我看来
<div id="CSQGroup">
</div>
<div>
<input type="button" value="Add Field" id="addField" onclick="addFieldss()" />
</div>
function addFieldss()
{
$.ajax({
url: '@Url.Content("~/AdminProduct/GetColorSizeQty")',
type: 'GET',
success:function(result) {
var newDiv = $(document.createElement("div")).attr("id", 'CSQ' + myCounter);
newDiv.html(result);
newDiv.appendTo("#CSQGroup");
myCounter++;
},
error: function(result) {
alert("Failure");
}
});
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中
public ActionResult GetColorSizeQty()
{
var data = new AdminProductDetailModel();
data.colorList = commonCore.getallTypeofList("color");
data.sizeList = commonCore.getallTypeofList("size");
return PartialView(data);
}
[HttpPost]
public ActionResult AddDetail(AdminProductDetailModel model)
{
....
}
Run Code Online (Sandbox Code Playgroud)
在我的部分视图中
@model IKLE.Model.ProductModel.AdminProductDetailModel
<div class="editor-field">
@Html.LabelFor(model => model.fkConfigChoiceCategorySizeId)
@Html.DropDownListFor(model => model.fkConfigChoiceCategorySizeId, …Run Code Online (Sandbox Code Playgroud) 我有一个表,我想在按下添加新链接后克隆它的最后一行.当我的行中只有TextBoxes时它完全正常,但是当有一个下拉列表时它没有.请帮我修改jquery代码.这是表格的代码:
<div><a href="#" id="addNew">Add New</a></div>
<table id="dataTable">
<tr>
<th>Item</th>
<th>Cost</th>
<th></th>
</tr>
@if (Model != null && Model.Count > 0)
{
int j = 0;
foreach (var i in Model)
{
<tr>
<td>@Html.DropDownListFor(a => a[j].fk_purchase_id, (SelectList)ViewBag.fk_purchase_id, null, htmlAttributes: new { @class = "form-control"})</td>
<td>@Html.TextBoxFor(a => a[j].cost, htmlAttributes: new { @class = "form-control" })</td>
<td>
@if (j > 0)
{
<a href="#" class="remove">Remove</a>
}
</td>
</tr>
j++;
}
}
</table>
Run Code Online (Sandbox Code Playgroud)
这是需要一些改进的代码:
<script>
$(function () {
//1. Add new row …Run Code Online (Sandbox Code Playgroud) 根据关于ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries的开创性 Scott Hanselman 文章:
我们通过查找来读入属性 索引必须从零开始并且不间断
parameterName[index].PropertyName
所以这个 HTML:
<input type="text" name="People[0].FirstName" value="George" />
<input type="text" name="People[1].FirstName" value="Abraham" />
<input type="text" name="People[2].FirstName" value="Thomas" />
Run Code Online (Sandbox Code Playgroud)
它将像这样发布:

但是,如果我通过 AJAX 将一个新人加载到我的模型中,我会丢失将该人构建到模型中的上下文并获得以下输出:
<input type="text" name="FirstName" value="New" />
Run Code Online (Sandbox Code Playgroud)

这不会被模型活页夹拾取。
问:通过 AJAX 动态添加新元素时,如何保留表达式树?
模型: /Model/Person.cs
public class PersonViewModel
{
public List<Person> People { get; set; }
}
public class Person
{
public String FirstName { get; set; …Run Code Online (Sandbox Code Playgroud)