我使用MVC HTML Helper渲染Html DropDownList:
@Html.DropDownListFor(m => m.ParentId, menuSelectList)
我将此DropDownList
放在HTML表单中。当按下此表单中的提交按钮时,将创建HTML表单数据并在POST请求中发送。此数据将包含键名ParentId
,其键值为DropDownList
的选定值。如何在此数据中加入DropDownList
的所选文字,其核心名称为ParentName
。
答案 0 :(得分:3)
1)您可以使用隐藏的“ParentName”输入,并在您的组合(DropDownList)上触发更改事件时使用所选文本(javascript / jQuery)填充它。
2)只需在提交后从密钥中获取值(在POST操作中),就应该可以(例如db查询)。
3)以密钥包含密钥AND值的方式构建selectList
(例如用~
分隔,并在POST操作中拆分“key~value”)
我会亲自去找第二个解决方案,但是......
答案 1 :(得分:1)
您可以使用JavaScript,因为浏览器不会在任何地方发送所选文本。
一个技巧是将此类代码放在.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();
}
这段代码基本上实现了this other answer中的第一个想法,并且只需要读取所选文本的select键和“_text”的请求值,例如:
string selectedText = Request.Form[m.ParentId + "_text"];
Live test case。 (仅限JavaScript方面)