【发布时间】:2016-03-24 12:25:48
【问题描述】:
我有一个使用此代码在我的主视图中呈现的局部视图
<div>
<h3>Budget Detail</h3>
<div><input type="button" id="addbudgetdetail" value="Add row" /></div>
<div id="new-budgetdetail">
@if (Model.budget != null)
{
foreach (var budgetdetail in Model.budget.budgetdetails)
{
@Html.Partial("budgetdetail", Model)
}
}
else
{
@Html.Partial("budgetdetail", Model)
}
</div>
</div>
有一个java脚本可以在点击按钮时动态添加更多的局部视图
$(function () {
$('#addbudgetdetail').on('click', function () {
jQuery.get('@Url.Action("budgetdetail")').done(function (html) {
$('#new-budgetdetail').append(html);
$('form').data('validator', null);
$.validator.unobtrusive.parse($('form'));
});
});
});
这是我的部分观点:
@model BudgetPortalMVC4.Models.NewBudgetModel
@{
Layout = null;
}
<script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
@using (Html.BeginCollectionItem(""))
{
@Html.ValidationSummary(true)
<div class="item">
<table>
<tr>
<td>
@Html.LabelFor(m => m.SelectedCategory)
@Html.DropDownListFor(m => m.SelectedCategory, Model.CategoriesList, "Please select", new { @class = "SelectedCategory" })
@Html.ValidationMessageFor(m => m.SelectedCategory)
</td>
<td>
@Html.LabelFor(m => m.SelectedSubCategory)
@Html.DropDownListFor(m => m.SelectedSubCategory, Model.SubCategoriesList, "Please select", new { @class = "SelectedSubCategory" })
@Html.ValidationMessageFor(m => m.SelectedSubCategory)
</td>
<td>
@Html.LabelFor(model => model.budgetdetail.Amount)
@Html.EditorFor(model => model.budgetdetail.Amount)
@Html.ValidationMessageFor(model => model.budgetdetail.Amount)
</td>
<td><a href="#" id="deleteRow" class="deleteRow">Delete</a</td>
</tr>
</table>
</div>
}
我的问题是,当我单击提交时,我没有看到任何部分视图列表。 我只能看到直接来自我的主视图的数据。
我是否在某处缺少 IEnumerable 属性?我应该尝试改用编辑器模板吗?
【问题讨论】:
-
您不能将
EditorTemplate与BeginCollectionItem()一起使用。并从您的零件中删除脚本。你foreach循环没有意义 - 我认为它的意思是@Html.Partial("budgetdetail", budgetdetail)但如果到那一步,else会抛出异常
标签: asp.net-mvc-4