ASP.net MVC3从HTML表单获取复选框值

时间:2012-04-12 21:39:19

标签: c# asp.net asp.net-mvc-3 forms checkbox

我在MVC3网站上有一个简单的表单,允许用户创建比赛条目。这已经实现并且目前工作正常,但是现在已经请求允许用户将其条目设为私有。

在我的Entry模型中,我添加了一个布尔值isPrivate。然后我想我会更改用于创建和编辑的HTML表单,以包含一个复选框,以指定该条目是否应该是私有的。

我是MVC3的新手,但我想我可以通过包含一个新的布尔参数来简单地更改表单发布的操作。

遗憾的是,这似乎不起作用。谁能告诉我如何将复选框值从HTML表单传递到后期操作?这可能相当普遍,但我似乎无法在网上找到这样的例子。几乎所有的例子都是简单的显示文本输入,我找不到任何复选框。

形式:

        <form method="post" action="../Entry/Create" enctype="multipart/form-data" onsubmit="return isValidInput()">
            <input type="text" id="EntryTitle" name="EntryTitle" />
            <div id="invalidTitle" class="invalidData"></div>
            <p id="char-remaining">(100 characters remaining)</p>

            <input type="text" id="EntryVideo" name="EntryVideo" />
            <div id="invalidVideo" class="invalidData"></div>
            <p id="vid-desc">(URL of the Video to Embed)</p>

            <input type="file" id="ImageFile" name="ImageFile" />
            <div id="invalidImage" class="invalidData"></div>
            <p id="file-desc">(200x200px, jpeg, png, or gif)</p>

            <textarea id="EntryDesc" name="EntryDesc"></textarea>
            <div id="invalidDesc" class="invalidData"></div>
            <br />

            <input type="checkbox" id="isPrivate" name="isPrivate" />
            Make my entry private.

            <br />

            (private entries will only be viewable by you and site administrators)

            <br />


            <button id="new-entry-save">save</button>
        </form>

动作:

public ActionResult Create(string EntryTitle, string EntryVideo, HttpPostedFileBase ImageFile, string EntryDesc, Boolean isPrivate)
{
...
}

2 个答案:

答案 0 :(得分:3)

将checkbox =“true”添加到复选框,同时在其名称和值= false之后添加隐藏输入,即:

<input type="checkbox" id="isPrivate" name="isPrivate" value="true" />
<input type="hidden" name="isPrivate" value="false" />

如果您不想使用隐藏,请使用bool?而不是bool(例如可以为空)

答案 1 :(得分:2)

另一个选项是使隐藏文本字段具有相同的名称,以强制未选中字段中的数据成为帖子的一部分。请参阅Post the checkboxes that are unchecked

<form> 
  <input type='hidden' value='0' name='selfdestruct'> 
  <input type='checkbox' value='1' name='selfdestruct'> 
</form>