2

私の MVC3 サイトには、ユーザーがコンテスト エントリを作成できるシンプルなフォームがあります。これは実装されており、現在は正常に動作していますが、ユーザーが自分のエントリを非公開にできるようにするように要求されています。

私のエントリ モデルでは、ブール値の 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" />

hidden を使いたくない場合は、bool? bool の代わりに (nullable など)

于 2012-04-12T21:42:31.680 に答える
2

もう 1 つのオプションは、同じ名前のテキスト フィールドを隠して、チェックされていないフィールドのデータを強制的に投稿の一部にすることです。チェックされていないチェックボックスを投稿するを参照してください。

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