如何从mvc中的SelectList获取名称值

时间:2017-11-15 14:15:30

标签: asp.net-mvc selectlist

我想从mvc。

中的SelectList获取名称值而不是ID值

这是我的代码

控制器

var occupationList = new SelectList(new[] 
{
    new { ID = 1, Name = "Student" },
    new { ID = 2, Name = "House Wife" },
    new { ID = 3, Name = "Business Man" },
    new { ID = 4, Name = "Service Man" },
},
"ID", "Name", 1);
ViewData["occupationList"] = occupationList;
return View();

查看

@Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList, new {@class="control-label", style="width:250px;" })

现在,当我从下拉列表中选择项目时,它会显示所选项目,但它会将ID值存储在数据库中。

例如:我从下拉列表中选择Student名称值并保存。现在,在数据库中它存储1值。

但我不想存储ID值,即1。我想将Name值存储在数据库中,即Student

谢谢。

2 个答案:

答案 0 :(得分:2)

提交表单时,所选选项的value属性将从浏览器发送到该select元素的服务器。如果要发送名称而不是数字ID,则应将SelectList的数据值字段设置为名称而不是Id

var occupationList = new SelectList(new[]
    {
        new { ID = 1, Name = "Student" },
        new { ID = 2, Name = "House Wife" },
        new { ID = 3, Name = "Business Man" },
        new { ID = 4, Name = "Service Man" },
    },
    "Name", "Name", "Student");
ViewData["occupationList"] = occupationList;

您的观看代码将是相同的

@Html.DropDownList("Occupation", ViewData["occupationList"] as SelectList,  
                                    new {@class="control-label", style="width:250px;" })

这将为SELECT元素呈现标记,其值和文本设置为相同的字段。

<select id="Occupation" name="Occupation">
   <option value="Student" selected="selected">Student</option>
   <option value="House Wife">House Wife</option>
   <option value="Business Man">Business Man</option>
   <option value="Service Man">Service Man</option>
</select>

如前所述,现在提交表单时,将提交字符串值而不是数字ID。这意味着您需要调整服务器端代码以接收字符串值并保存它(可能还需要更新数据库模式以存储字符串值而不是数值)

答案 1 :(得分:1)

使用此代码在DB

中保存名称
@Html.DropDownList("Occupation", new SelectList(ViewData["occupationList"] as SelectList, "Name", "Name") , new { @class = "control-label", style = "width:250px;" })