【问题标题】:How to get name value from SelectList in mvc如何从 mvc 中的 SelectList 中获取名称值
【发布时间】:2017-11-15 14:15:29
【问题描述】:

我想从 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 Name 值并保存它。现在,它在数据库中存储1 值。

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

谢谢。

【问题讨论】:

标签: asp.net-mvc selectlist


【解决方案1】:

当您提交表单时,所选选项的 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。这意味着您需要对服务器端代码进行调整以接收字符串值并保存它(可能还需要更新 db 架构以存储字符串值而不是数值)

【讨论】:

    【解决方案2】:

    使用此代码将名称保存在数据库中

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

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 1970-01-01
      • 2012-10-06
      • 2015-02-07
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多