3

これは私のビューページのマークアップです

<%for (int i = 0; i < 3; i++)
  { %>


  <%:Html.CheckBox("Test") %>

<%} %>

これは、フォームコレクションオブジェクトから値を取得しているコントローラーです

public ActionResult CreateTaxMaster(TaxMaster objTaxMaster ,bool [] Test,FormCollection form)
{ 
    string LocalCheckboxValues = string.Empty;
    foreach (var key in form.AllKeys)
    {
         if (key.Contains("Test"))
         {
              LocalCheckboxValues = LocalCheckboxValues + form.Get(key);                 
         }

}

適切な値を取得するために3つの方法すべてを試しましたが、チェックボックスの選択された値が一致しない真、偽の値がいくつか得られました

3つのチェックボックスをすべて選択しても、フォームコレクションの値はtrue、false、true、false、true、falseになります

どんな助けでも感謝されます。前もって感謝します。

4

5 に答える 5

0
List<bool> bools = Request["Test"].Split(',').Select(n => string.Compare(n, "true", true) == 0? true : false).ToList();

for (int i = 0; i < bools.Count(); ++i)
{
    if (bools[i]) bools.RemoveAt(i + 1);
}
于 2015-09-24T15:18:12.603 に答える
0

非表示がないと、チェックされた値のみが投稿されます。bool[] をパラメーターとして使用すると、チェックボックスと非表示の値が取得されます。したがって、false は 1 つのエントリを提供し、true は一致する false を提供します。

CheckBoxFor が追加の入力タグをレンダリングするのはなぜですか? FormCollection を使用して値を取得するにはどうすればよいですか?

    /// <summary>
    /// If you posted an array of checkboxes to a controller, this will extract the values you expect.
    /// </summary>
    /// <param name="arrayOfCheckboxesFromController">An array of checkboxes passed to the controller</param>        
    /// <remarks>with checkboxes, true values come with a twin false so remove it</remarks>
    private static void GetCheckboxArrayValues(IList<bool> arrayOfCheckboxesFromController)
    {
        for (var i = 0; i < arrayOfCheckboxesFromController.Count(); i++)
        {
            if (!arrayOfCheckboxesFromController[i]) continue;

            // This assumes the caller knows what they are doing and passed in an array of checkboxes posted to a controller
            arrayOfCheckboxesFromController.RemoveAt(i + 1);
        }
    }
于 2014-05-08T01:34:23.360 に答える