2012-07-23 54 views
5

私はASP.NET MVCアプリケーションを作成しています。私は初心者ですので、これは本当に簡単です。私はASP.NET MVC - How to get checkbox values on postを参照しましたが、コードはもう利用できません。ここでポストバック時のチェックボックス値の取得ASP.NET MVC

は私のビューです:

@using (@Html.BeginForm("Promote", "FPL", FormMethod.Post)) 
{ 
<div data-role="fieldcontain"> 
<fieldset id="PromotionInfo" name="PromotionInfo"> 
<legend><b>@Model.itemType Promotion Details</b></legend> 
    <label for="TargetDate">Target Date: </label> 
    <input type="date" id="TargetDate" data-role="datebox" data-options='{"mode": "flipbox"}' /> 

    <label for="EmailCC">Email cc List: </label> 
    <input type="email" id="EmailCC" /> 

    <div data-role="fieldcontain"> 
    <fieldset data-role="controlgroup"> 
    <legend>Choose Destination Server(s): </legend> 

    @foreach (DataRow server in Model.destinationServerList.Rows) 
    { 
    <label for="@server.ItemArray[0]">@server.ItemArray[1]</label> 
    <input type="checkbox" name="destinationServerSID" id="@server.ItemArray[0].ToString()" /> 
    } 

    </fieldset> 
    </div> 
</fieldset> 

</div> 

<input type="submit" value="Submit" /> 
} 

そして、ここでは私のコントローラである:

public ActionResult Promote(string id) 
    { 
     //Model(item) construction occurs here 

     return View(item); 
    } 

    [HttpPost] 
    public ActionResult Promote(FormCollection collection) 
    { 
     try 
     { 
      string[] test = collection.GetValues("destinationServerSID"); 
     } 
     catch (Exception ex) 
     { 
      return null; 
     } 
    } 

テスト[]変数は、しかし、「上」の値を持っているどちらも2項目の配列を含み、私の項目のリストは2項目より長いです。選択したすべての値に対して「オン」が含まれていますが、「オフ」の値は含まれていません。チェックボックス(idフィールド)の実際の値が必要です。

答えて

3

IDはサーバーに送信されません。名前と値のみがサーバーに送信され、チェックボックスがオンの場合のみ表示されます。

value属性を設定してみてください。

<input type="checkbox" name="destinationServerSID" value="@server.ItemArray[0].ToString()" /> 
+1

うわー、私はそれを逃したとは思えません...ありがとう、それは私が必要なすべてです。 –

3

デフォルトのHTML投稿の動作では、未チェックボックスの値は送信されません。代わりにHtml.CheckboxForメソッドを使用すると、常に値を入力するために必要なすべての入力が生成されます。

+0

これはうまくいくかもしれませんが、idの代わりに値として渡す答えは私が必要だっただけです。答えてくれてありがとう! –

関連する問題