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 を使用してこれらの select 要素からオプションを変更すると、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);
            }
        }
    });
}
4

1 に答える 1

0

このように、javascript でなくても、うまくいくと確信しています。

値が入力されていない場合は、固定値の例を使用してデータベースから取得されます: アクティブ、非アクティブ、次の手順を実行します。

これらの値で列挙型を作成します

コントローラーが内部クラスを使用してリストに列挙されたこの型を変換した後、それを列挙型に変換し、ドロップダウンリストに移動します

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

于 2012-11-14T16:09:34.707 に答える