【问题标题】:Checkbox HTML Helper复选框 HTML 助手
【发布时间】:2010-01-20 05:33:44
【问题描述】:

我一直在处理一个 ASP.net MVC 项目,该项目在其中一个视图中使用复选框 HTML Helpers。我要解决的问题是在页面刷新或用户点击浏览器上的后退按钮时保持复选框状态。我正在尝试使用 HTML 帮助程序作为开始,但我对它的工作原理缺乏完整的了解。我被困在要求 HTML 属性的第三个参数上。我拥有的表单中的 sn-p 如下:

   <tr>
   <td><label for="Name">Name</label></td>
   <td><%= Html.Encode(entity.CONTACT_NAME)%></td>
   <td><input type="checkbox" name="Name" value="<%= Html.Encode(entity.CONTACT_NAME)%>"/> </td>
   <td><%= Html.CheckBox("Name", false, new {@name = Html.Encode(entity.CONTACT_NAME)}) %></td>
   </tr>

为避免混淆,我在表单之前声明了一个名为 entity 的对象,它有几个字符串值,其中之一是 CONTACT_NAME。我在 HTML Helper 上方有一个单独的标准 html 复选框,用于测试目的。当我的表单发布时,如果我选择标准复选框,我会得到值,如果我选择助手,我只会得到 true。

  • 我想知道的是,我怎样才能得到 像我选择 标准复选框?
  • 我怎么能 维护页面上的复选框状态 刷新??

感谢您的帮助。

更新:

@NickLarsen - 查看生成的 HTML 代码,值为“false”

根据 anthonyv 和 JonoW 的建议进行了修改,我的观点现在如下:

   <tr>
   <td><label for="Name">Name</label></td>
   <td><%= Html.Encode(entity.CONTACT_NAME)%></td>
   <td><%= Html.CheckBox("Name", false, new {@value = Html.Encode(entity.CONTACT_NAME)}) %></td>
   </tr>

但生成的 HTMl 仍将值显示为布尔值“false”,而不是实际的 CONTACT_NAME。

根据 NickLarsen 的建议,这是我的控制器中检查值的代码。

public ActionResult ProcessRequest(Request request, FormCollection form)
       {
            var aChangeRequest = new ChangeRequest();
            TryUpdateModel(aChangeRequest, new string[] { "Name" },form.ToValueProvider());
//Way more follows

}

【问题讨论】:

  • 您可能想查看发布到页面实际 html 中的值的内容。此外,如果您发布检查值的代码,那也会有很大帮助。

标签: asp.net-mvc


【解决方案1】:

“@name”应该是“@value”吗?看起来您正在尝试设置名称两次...

我很确定您想要以下内容:

<%= Html.CheckBox("Name", false, new {@value = Html.Encode(entity.CONTACT_NAME)}) %>

【讨论】:

    【解决方案2】:

    如果您有 2 个具有相同名称的输入,它们将作为值列表发布(MVC 将尝试将其转换为布尔值)。因此,如果有 2 个元素具有相同的名称,可能会扭曲您的测试,建议更改其中一个名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2020-08-14
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多