6

ドロップダウンリストとチェックボックスの 2 つのフィールドを持つフォームがあります。私はすべて正しく動作していますが、チェックボックスがチェックされている場合、何らかの理由でチェックボックスの値を取得できません。これは私のコードです..

[HttpPost]
    public ActionResult view(string pick)
    {

        switch (pick)
        {
            case "Deny":
                // capture checkbox value here
                break;
            case "Accept":
                // capture checkbox value here
                break;

        }
        return View();
    }

これが私の見解です

@using (Html.BeginForm("view", "grouprequest", FormMethod.Post, new {}))
{


 @Html.DropDownList("pick", new SelectList(new List<Object>{ 
                new{ Text ="Accept", Value= "Accept"},new{ Text ="Deny", Value= "Deny"}},    "Value", "Text"), new {})

 <input type="submit" name="work" id="work" value="Update" style="font-size:16px" />

foreach (var item in Model)
{
 <input type="checkbox" id="@item.grouprequestID" name="@item.grouprequestID"  value="@item.grouprequestID" />


}
}

基本的に、ドロップダウンリストにはAcceptDenyの 2 つのオプションがあります。コントローラーのSWITCH ケースを介してユーザーが選択したものをキャプチャできます。チェックボックスの値をキャプチャするにはどうすればよいですか? チェックボックスに@groupRequestIDという名前の変数があることに気付いた場合は、すべてのチェックボックスに 1、2、3 などの異なる一意の値が含まれます。どんな助けも大歓迎です!!

モデル

 public class grouprequest
{
    [Key]
    public int grouprequestID { get; set; }
    public int? profileID { get; set; }
    public int? registrationID { get; set; }
    public DateTime expires { get; set; }
    public int? Grouplink { get; set; }
}
4

1 に答える 1

17

サーバーに投稿されたときのチェック ボックスの動作が少し奇妙です。ボックスがチェックされている場合、ブラウザは次のように送信name=valueします

<input type="checkbox" name="name" value="value" />

しかし、チェックボックスがチェックされていない場合、サーバーは何も送信しません。

<input type="checkbox" name="Check1" id="Checks1" value="Hello" checked="checked"/>
<input type="checkbox" name="Check1" id="Checks1" value="Hello1" />
<input type="checkbox" name="Check1" id="Checks1" value="Hello2" />

結果としてCheck1 = Hello

これが意味することは、すべてのチェック ボックスが関連している場合、それらに同じ名前を付けると、ActionMethod の同じ属性が入力されるということです。その属性が列挙型の場合、チェックされたものだけが含まれます。

これがあなたの見解にある場合:

<input type="checkbox" name="MyValues" value="1" checked="checked"/>
<input type="checkbox" name="MyValues" value="2" />
<input type="checkbox" name="MyValues" value="3" />

これをコントローラーアクションメソッドとして:

public ActionMethod MyAction(IEumerable<int> myValues)

変数は次のmyValuesようになります。

myValues[0] == 1

Htmlヘルパー拡張機能を使用している場合は、次の点にも注意してください。

@Html.CheckBoxFor(m => m.MyValue)

拡張機能MyValueは入力タグと同じ名前の入力タグboolを作成します。つまり、値は常にコントローラー メソッドに渡されます。checkboxhidden

お役に立てれば。

于 2013-07-25T21:22:43.510 に答える