无法获得@ Html.ListBoxFor()的正确语法

时间:2016-05-10 08:09:11

标签: javascript asp.net-mvc razor html.listboxfor

我有一系列动态构建的@Html组件,包括ListBoxFor()。与其他人一起,我给了他们一个ID,然后我用它来填充一个名为inputvalues的模型值,该值保存每个组件发生变化时的值。这很好但我不得不改变ListBoxFor()的原始DropDownListFor(),但是虽然新语法有效,但我不能像以前那样为它分配ID值而不会出现语法错误。代码看起来像这样..

@if (Model != null)
{  
    @Styles.Render(BundleConfig.Styles_MultiSelect)

    IEnumerable<SelectListItem> filetypes = from filetype in Model.ListOptions
    select new SelectListItem
    {
        Value = filetype.ID.ToString(),
        Text = filetype.Name,
        Selected = Model.SelectedListOptionID == null ? false : Model.SelectedListOptionID > 0
    };

    <div class="editor-section">
        <div class="label">
            @Html.DisplayEditLabel(Model.Label, Model.Required.Value)
        </div>
        <div class="field large-text-field">
            @*Original drop down replaced by ListBoxFor() but with ID
            @Html.DropDownListFor(m => m.SelectedListOptionID, new SelectList(Model.ListOptions, "ID", "Name", Model.SelectedListOptionID).OrderBy(l => l.Value), new Dictionary<string, object>{
                 {"id", "personField_" + Model.ID}})*@

            @Html.ListBoxFor(m => m.ListOptions, filetypes, new { @class = "multiselectFileTypes" })
        </div>
    </div>
}    
@Scripts.Render(BundleConfig.Scripts_MultiSelect)
<script>
    $("#personField_" + "@Model.ID").change(function () {
        cnt++;

        var uploadValue = JSON.stringify({
            "id": "@Model.ID",
            "order": cnt,
            "required": "@Model.Required",
            "libraryUploadConfigType": 3,
            "customFieldTypeID": 5,
            "selectedListOptionID": $(this).val()
        });

        inputValues = inputValues + uploadValue;
    });


    $(".multiselectFileTypes").multiselect({
        noneSelectedText: 'All Options',
        minWidth: 230,
        selectedList: 6
    });
</script>   

虽然原始DropDownlistFor()的语法工作并更新了输入值,但组件不起作用。将它更改为ListBoxFor()后,该组件可以正常工作,但我似乎无法分配ID“personField_”而不会出现错误。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我无法看到您尝试在ListBoxFor帮助程序中分配ID。

应该是这样的:

 @Html.ListBoxFor(m => m.SelectedListOptionIDs, filetypes, new { @class = "multiselectFileTypes" })

模型的SelectedListOptionIDs字段应为{ID = 1}}或IList,或{ID <1}}您的ID类型(可能为IEnumerable)。然后它将在View上正常工作并在表单 POST 上正确绑定。

答案 1 :(得分:0)

见上文Stephen Meucke的回复。