如何检查ASP.NET MVC中的复选框是否已选中?
我有一些复选框,看起来像这样如何检查ASP.NET MVC中的复选框是否已选中?
这是一种形式。所以当它进入我的Action方法时,我只是有一个表单集合变量。现在我试着做
frmSign [“Remember”];
所以我试图将其立即转换为布尔值,但失败了。然后我做的ToString(),我意识到,包含在这个值是
“真,假”
这是正常的吗?为什么是真的,假的?现在是真的还是假的?
您可以只需添加一个布尔参数到你的动作:
public ActionResult LogIn(string username, string password, bool remember)
{
// You have it
}
此外,您可以使用RouteValues [“记住”]获得ValueProviderResult。
所以,你可以这样做:
public ActionResult LogIn(string username, string password)
{
bool remember = false;
ValueProviderResult val;
if (RouteValues.TryGetValue(key, out val))
remember = (bool)val.ConvertTo(typeof(bool));
// Now you have it
}
但我更喜欢的原因很明显第一选项。
至于问:
这是正常的吗?为什么是真的,假的?现在它是真是假?
是的,这是正常的。 MVC中的复选框助手总是生成值为“False”的隐藏输入。如果未选中复选框,则需要提供False值。
为什么?
由于根据W3.ORG,只有在复选框被选中时才会将值发布到服务器,否则不会(因此您不知道它是True还是False,例如为null)。
因此,如果您选择复选框“true,false”来到服务器,并且您可以安全地假定该值为true。
如果没有选择复选框,则“false”会进入服务器,您可以确定它未被选中。
要进一步说明:值(根据W3.ORG)与用逗号分隔。因此,在单一形式下使用相同名称的不同输入(即使输入是不同类型的:复选框,收音机,文本,隐藏等)也是完全正确的。
雅第一个选项的作品,但我只是不明白为什么它在一个frmCollection拧紧它。这可能是某种错误,或者我做错了什么。我喜欢frmCollection,因为它让事情更容易传递到UpdateModel。我想我可以保留frmCollection并传入一个bool参数。这似乎很奇怪。 – chobo2 2009-08-18 06:49:03
我已经添加了解释。 – 2009-08-18 07:24:35
你在页面上有两个吗? – 2009-08-18 06:15:51
不,这是我寻找的第一件事。我没有。 我注意到通过萤火虫,但我有这个。不知道这是否正常。 – chobo2 2009-08-18 06:45:07
啊。那么,我对MVC一无所知,特别是,所以也许没关系。我认为其他海报的答案更有帮助,所以我会把它留给你。然而,从纯粹的“请求”角度来看,这解释了这两个价值。 – 2009-08-18 06:51:36