Asp.net mvc 使用html.dropdownlistfor时显示所选值

Asp.net mvc 使用html.dropdownlistfor时显示所选值,asp.net-mvc,dropdownlistfor,Asp.net Mvc,Dropdownlistfor,我正在使用 @Html.DropDownListFor(x => x.Selects, new SelectList(Model.Selects, "Value", "Text", Model.Select), "Select"})` 用于显示美国各州列表的下拉列表。我展示的文本是阿拉巴马州、加利福尼亚州、纽约州等…见下文 <option value="AL">AL Alabama</option> <option value="CA">CA Cali

我正在使用

@Html.DropDownListFor(x => x.Selects, new SelectList(Model.Selects, "Value", "Text", Model.Select), "Select"})`
用于显示美国各州列表的下拉列表。我展示的文本是阿拉巴马州、加利福尼亚州、纽约州等…见下文

<option value="AL">AL Alabama</option>
<option value="CA">CA California</option>
<option value="NY">NY New York</option>
....
阿拉巴马州 加州 纽约州 ....
值属性具有状态缩写。我想要实现的是,当用户进行选择时,UI上的选定值应该显示州缩写,而不是州名称。目前它显示的是州名的缩写。有人能帮我吗

最简单的解决方案是只需使用Value属性两次(作为选项的值和内部文本):

如果您首先希望显示状态名,然后仅在选择用户后将其更改为状态缩写,则应通过Javascript处理此问题

要通过Javascript实现这一点,您应该首先设置下拉列表的id,并分配相应的
onChange
函数:

@Html.DropDownListFor(x => x.Selects, 
    new SelectList(Model.Selects, "Value", "Text", Model.Select), "Select"},
    , new {@id="selectListId" onchange = "setText(this)"})
然后实现您的功能:

function setText(sel) {
   var selectedItem = sel.options[sel.selectedIndex];
   selectedItem.text = selectedItem.value;  
   //or       
   //$("#selectListId option:selected").text(selectedItem.value); 
}

有没有关于如何使用javascript实现这一点的提示?
function setText(sel) {
   var selectedItem = sel.options[sel.selectedIndex];
   selectedItem.text = selectedItem.value;  
   //or       
   //$("#selectListId option:selected").text(selectedItem.value); 
}