1

我在这里查看了一些主题,但我仍然无法从复选框中获取值。

部分型号:

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 获取数据的原因。

4

2 回答 2

2

创建具有相同名称的所有复选框。在此示例中,我使用的是“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,您还应该收到该数组。

于 2013-07-09T11:42:44.253 回答
1

我以前问过同样类型的问题。请检查以下链接

MVC3 @Html.RadioButtonfor 将数据从视图传递到控制器

MVC3 @html.radiobuttonfor

我认为这可能对您有所帮助。

于 2013-07-09T12:04:58.597 回答