对于每个可用的项目,我渲染局部视图,在局部视图中我有一个复选框。目的是使用户可以一次选择多个项目,然后当他们点击删除时,将删除所有选择的项目。我的局部视图中的复选框不在目前的形式中:
<%= Html.CheckBox("IsSelected", Model.IsSelected)%>
所以它显示正确,但什么也没做。
之前我问了一个关于将模型中的值绑定到复选框的问题,并且工作正常。我做了:
<%= Html.CheckBox("["+itemx+"].IsSelected", x.IsSelected) %>
但是现在我已经创建了局部视图,我想知道如何将这一切联系起来并从局部视图中获取值?
感谢。
答案 0 :(得分:2)
@Felipe:你的回答并没有错,但是小的性能提升就是不要在循环中调用Html.Partial。
相反,调用Html.Partial并将IEnumerable作为模型传入并循环遍历该局部视图中的项目。
答案 1 :(得分:1)
您似乎正在使用ASPX View引擎,我的示例正在使用Razor,但概念是相同的,只需为您调整sintaxe。
将表单放在部分视图的渲染周围
<form action="@Url.Action("ProcessForm")" method="post">
<ul>
@Html.Partial("Checkboxes", Model)
</ul>
<input type="submit" value="Send selected items"/>
</form>
部分视图(〜/ Views / Home / Checkboxes.cshtml)
@model IEnumerable<SandboxMvcApplication.Models.Item>
@{
ViewBag.Title = "Checkboxes";
}
@foreach (var item in Model)
{
<li><input type="checkbox" name="items" value="@item.Id" />@item.Title</li>
}
我已回答了您之前提出的问题(Asp.net MVC get fully qualified URL to an action method有关如何向Action发送多个项目的问题,我只是稍微更改了此问题的复选框。