如何在回发事件中读取 ADO.NET 实体数据模型对象中的特定字段

How to read a specific field in ADO.NET Entity Data Model Object on Postback event

我有一个从数据库中填充的下拉列表:

控制器

PayrollDb pdb = new PayrollDb ();
var addBranchGui = new branch();
addBranchGui.BranchTypes = new SelectList(pdb.branchtypes,"Id", "Type");


查看

<p>Branch Type:@Html.DropDownListFor(x => x.BranchType, Model.BranchTypes, "Choose an option")</p>

此代码正确填充了下拉下载列表。当用户在下拉列表中选择一个选项并提交表单时出现问题,我在 [HttpPost 操作方法上捕获输入数据并将其插入数据库 table,这是 "Id" 字段当我想要插入 "Type" 字段时被插入。

我可以理解,在回发事件中,浏览器正在读取 "Id" 字段。有人可以指导我如何命令浏览器给我 "Type" 字段,以便我可以将其插入数据库。

SelectList 构造函数中,您指定 Id 作为下拉列表的数据值字段。

addBranchGui.BranchTypes = new SelectList(pdb.branchtypes,"Id", "Type");

所以它会像这样呈现下拉菜单

<SELECT name="BranchType">
   <option value="2">HeadOffice</head>
   <option value="4">Branch</head>
</SELECT>

所以将其更改为使用 Type 作为数据值字段。

addBranchGui.BranchTypes = new SelectList(pdb.branchtypes,"Type", "Type");

这将呈现一个 SELECT 元素,其选项值和选项文本具有相同的值

<SELECT name="BranchType">
   <option value="HeadOffice">HeadOffice</head>
   <option value="Branch">Branch</head>
</SELECT>

现在当用户发布表单时,您将在 BranchType 字段中获得文本值(类型)