我想从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
。
谢谢。
答案 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;" })