我在页面上有一些html复选框,我需要验证他们是否已检查页面的回发事件。
这些复选框的数据不会存储在数据库中,只需在使用之前进行检查即可进入下一页。
我如何验证它们已被检查?我在Request.Form.AllKeys集合中看不到它们
<input id='terms_eligibility' type='checkbox' />
<input id='terms_accurate' type='checkbox' />
<input id='terms_score_release' type='checkbox' />
EDIT 这就是我最终做的事情
查看
@Html.CheckBox("terms_eligibility")
控制器
string eligibility = Request.Form.GetValues("terms_eligibility")[0];
答案 0 :(得分:8)
使用MVC,您应该使用视图模型来跟踪复选框状态,例如
public class MyViewModel
{
public bool TermsEligibility { get; set; }
public bool TermsAccurate { get; set; }
public bool TermsScoreRelease { get; set; }
}
让MVC将属性映射到控件:
@model MyViewModel
@Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { id = "myFormId" })
{
@Html.CheckBoxFor(m => m.TermsElibility)
@Html.CheckBoxFor(m => m.TermsAccurate)
@Html.CheckBoxFor(m => m.TermsScoreRelease)
<input id="saveBtn" type="submit" value="Save" />
}
然后,您可以在发布结果时访问模型中的值:
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
if (model.TermsEligibility)
{
....
}
}
答案 1 :(得分:4)
如果未选中HTML复选框,则其值不会发送回网络服务器。
MVC通过为每个复选框添加<input type="hidden" />
来解决此问题,该复选框确保始终发送值,因此它可以检测是否选中了复选框。
要使用这些隐藏的输入,您必须使用Html.CheckBox
或Html.CheckBoxFor
辅助方法。
无论如何,您发布的HTML没有任何name=""
属性。 HTML输入必须具有name属性。他们不使用表单字段键的id
属性。