Model view controller 字符串值非ID的MVC dropdownlist

Model view controller 字符串值非ID的MVC dropdownlist,model-view-controller,asp.net-mvc-4,html-select,html.dropdownlistfor,Model View Controller,Asp.net Mvc 4,Html Select,Html.dropdownlistfor,有没有办法在MVC中创建一个下拉列表,为变量提供一个字符串值,而不仅仅是ID?我在dropdownlist上看到的所有内容都将其设置为使名称显示在下拉列表中,但变量始终获取ID值。有什么方法可以设置它,使变量得到一个字符串值吗?如果您想选择id并得到一个值,那么@Jack建议的方法将非常有效。如果您想获取所选的文本而不是值,可以使用jquery来实现 $('.dropdown').change(function(){ var result = $('.dropdown').text()

有没有办法在MVC中创建一个下拉列表,为变量提供一个字符串值,而不仅仅是ID?我在dropdownlist上看到的所有内容都将其设置为使名称显示在下拉列表中,但变量始终获取ID值。有什么方法可以设置它,使变量得到一个字符串值吗?

如果您想选择id并得到一个值,那么@Jack建议的方法将非常有效。如果您想获取所选的文本而不是值,可以使用jquery来实现

$('.dropdown').change(function(){
     var result = $('.dropdown').text();
});

.val()将给出所选的值,.text()将给出所选的文本。希望这能有所帮助。

我想这可能就是你想要的

您可以创建SelectList的新实例,第一个参数是要在下拉列表中显示的列表。第二个参数是要用于选项标记值的属性,第三个参数是要用于填充选项标记内文本的属性

在本例中,我使用ID作为值,但实际上您可以选择字符串值的任何属性

控制器代码

public ActionResult Create()
{
   testDB.ContactTypes.Load();
   // "ID" is the property that we want to use for our option value
   // "Name" is the property that we want to use for the text inside of our tag
   ViewBag.ContactTypes = new SelectList(testDB.ContactTypes.Local.ToList(), "ID", "Name");
   return View();
}
剃刀


@Html.DropDownListFor(model=>model.ContactType,(SelectList)ViewBag.ContactTypes)

将ID=name和name=name设置为。这样显示的内容与下拉列表的“值”或“id”相同。
<div class="editor-field">
  @Html.DropDownListFor(model => model.ContactType , (SelectList)ViewBag.ContactTypes)
</div>