繁体   English   中英

ASP.net MVC(c#)中的复选框

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM