我在这里查看了一些主题,但是从复选框获取值仍然有问题。
模型的一部分:
public Dictionary<Language, bool> TargetLanguages { get; set; }
视图的一部分:
<div class="editor-label">
<label for="TargetLanguages">select target languages</label>
</div>
<div class="editor-field">
<form>
@foreach (var item in Model.TargetLanguages)
{
@Html.CheckBox("TargetLanguages["+item.Key.Name+"]", item.Value)
@item.Key.Name
}
</form>
</div>
控制器部分:
[HttpPost, ActionName("AddDictionary")]
public ActionResult AddDictionary(FormCollection collection)
{
...
}
问题是我的FormCollection中没有任何TargetLanguages的痕迹。我尝试了CheckBoxFor,但没有帮助。我也尝试手动写复选框。
编辑:好的,我只是注意到问题出在哪里。我弄乱了标记,这就是为什么我无法从FormCollection获取数据的原因。
用相同的名称创建所有复选框。在此示例中,我使用的是“ SelectedTargetLanguages”。
@using (Html.BeginForm())
{
foreach (var item in Model.TargetLanguages)
{
<label>
@Html.CheckBoxFor(m => m.SelectedTargetLanguages, item.value)
@item.KeyName
</label>
}
<br/>
@Html.SubmitButton("Actualizar listado")
}
然后,在您的操作中,参数必须是这样的字符串数组:
public ActionResult AddDictionary(string[] selectedTargetLanguages)
请注意,参数的名称与复选框的名称相同。(即使在不同的机壳下也可以使用)。
您应该使用像这样的显式参数,而不是通用参数FormCollection
。无论如何,如果您使用FormCollection,则还应该接收该数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句