1

这是我的html-

<td>
   @{
     IEnumerable<SelectListItem> Brands = ViewBag.GetBrands;
     foreach (var item in Brands)
       {                                                                   
         @Html.CheckBox(item.Text, false)                                                                                                                                                                                 
         <label>@item.Text</label><br />
       }
    }
</td>

我将此控制器发布为 JSON 数据(表单集合)。如何在控制器中获取复选框textvalue表单集合数据?

4

3 回答 3

1

如何在控制器的表单集合数据中获取复选框的文本和值?

正确的方法是使用视图模型而不是 this IEnumerable<SelectListItem>。所以基本上你的模型可能看起来像这样:

public class BrandViewModel
{
    public string Text { get; set; }
    public bool Checked { get; set; }
}

然后将一个属性添加到您的主视图模型(您的视图被强类型化到的那个)类型IList<BrandViewModel>

public IList<BrandViewModel> Brands { get; set; }

然后很容易:

<td>
    @for (var i = 0; i < Model.Brands.Count; i++)
    {                                                                   
        @Html.CheckBoxFor(x => x.Brands[i].Checked)
        @Html.LabelFor(x => x.Brands[i].Checked, Model.Brands[i].Text)
        @Html.HiddenFor(x => x.Brands[i].Text)
    }
</td>

最后,您可以从控制器操作中摆脱任何弱类型的 FormCollection 并简单地获取视图模型:

[HttpPost]
public ActionResult SomeAction(IList<BrandViewModel> brands)
{
    ...
}

或者,如果您还需要传递控制器操作的其他属性,则可能采用主视图模型:

[HttpPost]
public ActionResult SomeAction(MainViewModel model)
{
    // the model.Brands collection will be automatically bound here
    ...
}
于 2013-09-23T06:12:43.090 回答
1

我设法通过 -

@Html.CheckBox(item.Text, false, new {item.Value}) 
于 2013-09-23T10:38:53.690 回答
0

首先,您必须执行回发到服务器。

@using (Html.BeginForm("actionname", "controller",
                    FormMethod.Post))
//your code
@{
     IEnumerable<SelectListItem> Brands = ViewBag.GetBrands;
     foreach (var item in Brands)
       {                                                                   
         @Html.CheckBox(item.Text, false)                                                                                                                                                                                 
         <label>@item.Text</label><br />
       }
    }
<input type="submit" class="k-button" value="Submit" id="btnSubmit" name="btnSubmit" />
}

现在在控制器中,您将使用表单集合获取值

[HttpPost]
public ActionResult actionName( FormCollection collection)
{

collection.keys["checkbox"].value ... your code
}
于 2013-09-23T06:10:48.650 回答