0

我的页面上有一个 ViewModel 和一个 DropDownList ,其中包含一些值:

public class MyViewModel
{
    public string SelectedItemDrop1 { get; set; }
    public string SelectedItemDrop2 { get; set; }
    public string SelectedItemDrop3 { get; set; }
    public List<OptionViewModel> Options { get; set; }
}

public class OptionViewModel
{
    public string Number { get; set; }
    public string Option { get; set; }
}

而且,在我看来:

@using (Html.BeginForm("Save", "Controller", FormMethod.Post))
{
    <ul id="cursos">
    <li>
        @Html.DropDownListFor(c => c.SelectedItemDrop1,
        new SelectList(Model.Options, "Number", "Option", Model.SelectedItemDrop1))
        Choose 1
    </li>
    <li>
        @Html.DropDownListFor(c => c.SelectedItemDrop2,
        new SelectList(Model.Options, "Number", "Option", Model.SelectedItemDrop2))
        Choose 2
    </li>
    <li>
        @Html.DropDownListFor(c => c.SelectedItemDrop3,
        new SelectList(Model.Options, "Number", "Option", Model.SelectedItemDrop3))
        Choose 3
    </li>
    </ul>
}

当我使用 Javascript 更改这些选择元素的选项时,我的返回值为空。有什么问题?太感谢了!!!

编辑:

我的 JavaScript 代码:

$("#cursos li select").each(function (i, item) {

    $(this).change(function () {
        updateCursos($(this), 7);
    });
    $(this).blur(function () {
        if ($(this).val() != -1) {
            $(this).attr('disabled', 'disabled');
        }
    });
});

function updateCursos(select, avaiableCourses) {

    var selecteds = '';
    $("#cursos li select").each(function (i, item) {
        var selected = $(item).val();
        if (selected != -1)
            selecteds += selected + ',';
    });

    var arr = selecteds.split(',');

    $("#cursos li select").each(function (i, item) {
        if ($(item).val() != select.val()) {

            var oldValue = $(item).val();
            if ($(item).val() == -1) {
                var options = "<option value='-1'></option>";
                for (i = 1; i <= avaiableCourses; ++i) {
                    if (select.val() != i && !contains(i, selecteds)) {
                        options += "<option value='" + i + "'>" + i + "ª option</option>";
                    }
                }
                options += "<option value='0'>Don't want it</option>";

                $(item).children("option").remove();
                $(item).html(options);
                $(item).val(oldValue);
            }
        }
    });
}
4

1 回答 1

0

这种方式我确信它有效,甚至不是javascript。

如果未填充的值来自数据库,具有固定值示例:活动,不活动,请执行以下操作

使用这些值创建枚举类型

控制器使用内部类转换列表中枚举的这种类型后,将其转换为可枚举并转到下拉列表

使用示例:@Html.DropDownListFor (model => model.chamados.UrgenciaId, new SelectList (ViewBag.urgencia, "Id", "Name"))

于 2012-11-14T16:09:34.707 回答