1

我使用 MVC HTML Helper 来呈现 Html DropDownList:

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

我把它DropDownList放在一个 HTML 表单中。在此表单中按下按钮提交时,将创建一个 HTML 表单数据并在 POST 请求中发送。此数据将包含键名ParentId,键值为DropDownList's selected value。如何在此数据中包含所选文本DropDownList的键名是.ParentName

4

2 回答 2

3

1)您可以使用隐藏的“ParentName”输入,并在您的组合(DropDownList)上触发更改事件时使用所选文本(javascript / jQuery)填充它。

2)只需在提交后(在POST操作中)从键中获取值,应该是可能的(例如db查询)。

selectList3)以键包含键和值的方式构建您的(~例如,以a分隔,并在POST操作中拆分“key~value”)

我个人会选择第二种解决方案,但是......

于 2013-01-16T09:47:07.763 回答
1

您可以使用 JavaScript 来完成,因为浏览器不会将所选文本发送到任何地方。

一个技巧是将此类代码放在 .aspx 页面的最底部:(在 .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 回答