[英]Checkboxes in ASP.net MVC (c#)
我正在创建一个复选框列表来处理一些首选项,如下所示...
<ul>
<%foreach (var item in ViewData["preferences"] as IEnumerable<MvcA.webservice.SearchablePreference>)
{
var feature = new StringBuilder();
feature.Append("<li>");
feature.Append("<label><input id=\"" + item.ElementId + "\" name=\"fpreferences\" type=\"checkbox\" />" + item.ElementDesc + "</label>");
feature.Append("</li>");
Response.Write(feature);
}
%>
</ul>
传递给SearchablePreference []的视图数据的数据,列表显示良好。
问题是; 如果页面必须返回自身(即验证失败),我将如何重新填充选定的框。
在webforms中,它是由viewstate自动处理的; 与其他输入元素一样,我只是通过ViewData将发送的数据传递回页面。
谢谢
改用Html.Checkbox 。
您必须先读取所有值,然后将它们添加到返回的视图的ViewData中,然后将它们写入视图显示中的复选框(最好使用Html.Checkbox)。 据我所知,Html.Checkbox不会自动为您管理视图状态。
假设我有一个标准的CRUD对象,那么在“编辑”视图中,我经常会有类似的内容。 (我使用相同的视图进行编辑和新建)
<input (other input attribute here) value="<%=(myObj == null ? "" : myObj.AppropriateProperty)%>" />
我同意RichardOD,请使用Html.Checkbox
但是,如果您坚持手动进行操作,则方法如下
使用对象保存数据(无论是否选择了某项)并将其提供给视图,在填充复选框时,请检查是否设置了相关值,如果是,则在html上设置html“ checked = \\” checked \\“”复选框
第一次渲染时,该对象将只有假数据,因此将不会选择任何内容。
您在视图中有太多的代码。 这应该在控制器中完成。 视图应为:
<ul>
<%foreach (var item in ViewData["preferences"] as IEnumerable<MvcA.webservice.SearchablePreference>)
{
<li>
<%=Html.Checkbox(........) %>
</li>
}
%>
</ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.