【发布时间】:2015-05-13 06:30:43
【问题描述】:
我有一个复选框和按钮:
@using(Html.BeginForm())
{
<div id="search-block">
<input type="checkbox" name="showAll" id="showAll">Include completed
<input type="submit" value="Apply"/>
</div>
}
控制器中的第二件事:
[HttpPost]
public ActionResult Index(FormCollection collection)
{
var showAll = collection["showAll"];
TempData["showAll"] = showAll;
...
something
...
}
它确实有效,但是:
如果未选中复选框,我将收到 null (不会打扰我)。
如果选中复选框,我会收到来自FormCollection 的“开启”,这不是我需要的。我想收到真假。
我该怎么做?
【问题讨论】:
-
您可以在表单中放置一个同名且值为“false”的隐藏字段。 那么如果他们不选中该框,则表单中发布的值将为假。如果他们选中它,您将得到“on,false”,但您可以在你的控制器中解决这个问题 bool x = (collection["showAll"] == 'false')
-
这样的玩笑吗?
-
不-如果您查看某些框架如何处理复选框的背景,您会发现这样做的隐藏字段-它确保将某些内容发布到服务器
-
无论我怎么看你的话,我都看不到你确实阅读了这个问题的任何确认。
-
您希望您的复选框发布真假。为此,您需要将 value=True 放入复选框输入标签中。为了在未选中复选框时将任何内容发布到服务器 - 您需要在表单中放置一个值为“false”的隐藏字段。这就是下面 Tashar 的回答中发生的事情,以及为什么您在表单集合中得到“真,假”的原因。您只需要查看第一个元素 - collection["showAll"].Split(',')[0]
标签: asp.net asp.net-mvc checkbox