使用CheckBoxes的RenderPartial视图。

时间:2012-03-08 09:39:20

标签: asp.net-mvc

对于每个可用的项目,我渲染局部视图,在局部视图中我有一个复选框。目的是使用户可以一次选择多个项目,然后当他们点击删除时,将删除所有选择的项目。我的局部视图中的复选框不在目前的形式中:

<%= Html.CheckBox("IsSelected", Model.IsSelected)%>

所以它显示正确,但什么也没做。

之前我问了一个关于将模型中的值绑定到复选框的问题,并且工作正常。我做了:

 <%= Html.CheckBox("["+itemx+"].IsSelected", x.IsSelected) %>

但是现在我已经创建了局部视图,我想知道如何将这一切联系起来并从局部视图中获取值?

感谢。

2 个答案:

答案 0 :(得分:2)

@Felipe:你的回答并没有错,但是小的性能提升就是不要在循环中调用Html.Partial。

相反,调用Html.Partial并将IEnumerable作为模型传入并循环遍历该局部视图中的项目。

有关此主题的更多信息:http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steven-Smith-Improving-ASPNET-MVC-Application-Performance

答案 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发送多个项目的问题,我只是稍微更改了此问题的复选框。