1

MVCHTMLヘルパーを使用してHtmlDropDownListをレンダリングします。

@Html.DropDownListFor(m => m.ParentId, menuSelectList)

DropDownListこれをHTMLフォームに入れました。このフォームで[送信]ボタンを押すと、HTMLフォームデータが作成され、POSTリクエストで送信されます。このデータにはParentId、キー値がDropDownListの選択された値であるキー名が含まれます。DropDownList選択したテキストをキー名でこのデータに含める方法はですParentName

4

2 に答える 2

3

1)非表示の「ParentName」入力を使用して、コンボ(DropDownList)で変更イベントが発生したときに選択したテキスト(javascript / jQuery)を入力できます。

2)送信後に(POSTアクションで)キーから値を取得するだけで、それが可能になるはずです(たとえば、dbクエリ)。

selectList3)キーにキーと値が含まれるようにビルドします(~たとえば、で区切られ、POSTアクションで「key〜value」を分割します)

私は個人的に2番目の解決策に行きますが...

于 2013-01-16T09:47:07.763 に答える
1

ブラウザは選択したテキストをどこにも送信しないため、JavaScriptを使用してこれを行うことができます。

1つのトリックは、そのようなコードを.aspxページの一番下に配置することです:(の前に</body>

var arrDDLs = document.getElementsByTagName("select");
for (var i = 0; i < arrDDLs.length; i++) {
    var oDDL = arrDDLs[i];
    if (!oDDL.name || oDDL.name.length === 0)
        continue;
    var inputName = oDDL.name + "_text";
    var input = document.createElement("input");
    input.type = "hidden";
    input.name = inputName;
    input.id = inputName;
    oDDL.form.appendChild(input);
    oDDL.onchange = function () {
        var index = this.selectedIndex;
        var text = (index >= 0) ? this.options[index].text : "";
        var inputName = this.name + "_text";
        var input = document.getElementById(inputName);
        input.value = text;
    };

    //populate initial text:
    oDDL.onchange();
}

このコードは基本的に、この他の回答の最初のアイデアを実装しており、選択したテキストを取得するには、選択キーのリクエスト値に「_text」を加えたものを読み取る必要があります。例:

string selectedText = Request.Form[m.ParentId + "_text"];

ライブテストケース。(JavaScript側のみ)

于 2013-01-16T10:31:46.067 に答える