【发布时间】: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