5

ASP.NET MVC アプリケーションを作成しています。私は初心者なので、これは本当に簡単だと確信しています。私は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;
        }
    }

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

4

2 に答える 2

3

ID はサーバーに投稿されません。名前と値のみがサーバーに送信され、チェックボックスがオンになっている場合にのみ送信されます。

valueで属性を設定してみてください@server.ItemArray[0].ToString()

<input type="checkbox" name="destinationServerSID" value="@server.ItemArray[0].ToString()"  />
于 2012-07-23T18:50:36.150 に答える
3

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

于 2012-07-23T18:52:46.050 に答える