0

私は MVC アプリを構築していますが、現在、私のビューはアイテムのパックを生成しています。データを送信したい場合、ユーザーはチェックボックスをチェックする必要があります。

これが私の見解とそれがどのように構築されているかです:

<script type="text/javascript">
    $(document).ready(function() {
        //alert("The document is ready");
        $("#selectAll").click(function() {
            //alert("The case has been clicked");
            var chkValue = $(this).is(":checked");
            $(".divChckBox").prop("checked", chkValue);
        });
    });
</script>
<p>
    @using (Html.BeginForm("SendObj", "Manager"))
    {
        <p>
            Select / UnSelet All Items @Html.CheckBox("selectAll", true) 
        </p>
        <table>
            <tr>
                <th>Card Name</th>
                <th>Number In Stock</th>
                (...)
            </tr>
            @for (int i = 0; i < Model.Count(); i++)
            {
                <tr>
                    <td>@Html.DisplayFor(x => x[i].m_OthObj.m_ObjName)</td>
                    <td>@Html.DisplayFor(x => x[i].m_NbInStock)@Html.HiddenFor(x => x[i].m_NbInStock)</td>
                    (...)
                    <td>
                        <input type="checkbox" name="itdoesnotmatter" class="divChckBox" checked="true"/>
                    </td>
                </tr>
            }

        </table>
        <input type="submit" value="Send"/>
    }
</p>

「CheckboxFor」を使用できない理由がわかりました。ここでやりたいことは、チェックボックスのステータスが「チェック済み」のアイテムのみを送信することです。モデル バインディング (checkboxfor) を介してこれを行う方法は知っていますが、これを構築する方法についてはわかりません。アイテムのリストを返す必要があります。では、どうすればこれを行うことができますか?どうもありがとうございました!

4

3 に答える 3

0

メソッドを使用しattrてプロパティを変更してみてくださいchecked

$(document).ready(function() {
        $("#selectAll").click(function() {
            var chkValue = $(this).is(":checked");
            $(".divChckBox").attr("checked", chkValue);
        });
    });
于 2013-03-08T20:57:41.633 に答える
0

あなたのフォームは名前に基づいて値を返すので、そのようなばかげた名前を言った人を撃って
ください:)

<input type="checkbox" name="InStock" class="divChckBox" checked="true" value="@Model[i].ID" />

または、より代表的なもの。チェックボックスの値として一意の識別子を指定することが重要であることに注意してください。値は、チェックされたものを識別する方法です!

コントローラーでは、それをキャプチャする方法がいくつかあります。私はこのようにします:

public ActionResult Create(List<int> InStock)
{
  foreach(var inStockItem in InStock)
  {
    //do what you need to do
  }
}

重要なポイント:

List<int> InStock

これは、チェックボックスの NAME 属性と一致する必要があります。実際の値は、チェックボックスの値になります。

ここでは、アクションの作成をランダムに選択しましたが、現在のアクション (編集、インデックスなど) に一致させる必要があります。

幸運を!

于 2013-03-08T21:00:52.700 に答える
0

コードを表示:

<!-- note "x[i].m_id"; Use the entity's id property is here
     ...maybe this should be m_NbInStock? -->
<input type="checkbox" name="selectedItems" value="@x[i].m_id" class="divChckBox" checked="true"/>

コントローラーコード:

public class Manager : Controller
{
    /* ... */
    [HttpPost]
    public ActionResult SendObj(IList<Int32> selectedItems)
    {
      // Grab those items by their IDs found within `selectedItems` and perform
      // any processing necessary

      // ...
      //return View();
    }
    /* ... */
}
于 2013-03-08T21:03:51.493 に答える