2

我的 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)
{
...
}
4

2 回答 2

3

将 value="true" 添加到复选框,并在其后添加具有相同名称和 value=false 的隐藏输入,即:

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

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

于 2012-04-12T21:42:31.680 回答
2

另一种选择是隐藏具有相同名称的文本字段,以强制未选中字段中的数据成为帖子的一部分。请参阅发布未选中的复选框

<form> 
  <input type='hidden' value='0' name='selfdestruct'> 
  <input type='checkbox' value='1' name='selfdestruct'> 
</form> 
于 2012-04-12T21:50:44.220 回答