簡體   English   中英

ASP.NET MVC 3-Javascript中斷了DropDownList的SelectedValue

[英]ASP.NET MVC 3 - Javascript breaks SelectedValue from DropDownList

我的頁面上有一個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更改這些選擇元素中的選項時,返回值為null。 有什么問題? 非常感謝!!!

編輯:

我的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);
            }
        }
    });
}

這樣,我確定它可以正常工作,甚至不能使用javascript。

如果未填充的值來自數據庫,且具有固定值,例如:活動,非活動,請執行以下操作

使用這些值創建枚舉類型

控制器使用內部類將列表中枚舉的類型轉換后,將其轉換為可枚舉的類型,然后轉到下拉列表

使用示例:@ Html.DropDownListFor(模型=> model.chamados.UrgenciaId,新的SelectList(ViewBag.urgencia,“ Id”,“名稱”))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM