c# - 如何在编辑模式 MVC 中将数据从数据库绑定到 DropDownList?
问题描述
我想将模型中的选定值数据绑定到视图上的下拉列表,但仍然无法正常工作。
在下拉列表中仍选择“选择业务单位”。
你有什么想法可以给我建议吗?
提前谢谢你的帮助。
这是用户模型
public class UserModel
{
//public static ClaimsIdentity Identity { get; set; }
[Key]
public Int64 UserId { get; set; }
[Required]
public string UserCode { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string UserEmail { get; set; }
[Required]
public string UserPassword { get; set; }
[Required]
public string UserRole { get; set; }
[Required]
public string UserStatus { get; set; }
[Required]
public DateTime LastLogin_Date { get; set; }
[Required]
public string Create_By { get; set; }
[Required]
public DateTime Create_Date { get; set; }
[Required]
public string Update_By { get; set; }
[Required]
public DateTime Update_Date { get; set; }
public string BU_Code { get; set; }
public virtual BusinessUnitModel BusinessUnits { get; set; }
}
这是业务单元模型
public class BusinessUnitModel
{
public BusinessUnitModel()
{
this.Users = new HashSet<UserModel>();
this.Departments = new HashSet<DepartmentModel>();
}
[Key]
public string BU_Code { get; set; }
[Required]
public string BU_Name { get; set; }
[Required]
public string BU_Prefix { get; set; }
[Required]
public string BU_Type { get; set; }
[Required]
public string BU_Status { get; set; }
[Required]
public string Create_By { get; set; }
[Required]
public DateTime Create_Date { get; set; }
[Required]
public string Update_By { get; set; }
[Required]
public DateTime Update_Date { get; set; }
public virtual ICollection<UserModel> Users { get; set; }
public virtual ICollection<DepartmentModel> Departments { get; set; }
public virtual ICollection<StockModel> Stocks { get; set; }
}
这是用户控制器
* 我一直在更改 ViewBag.businessUnits ==> ViewBag.businessUnit 的代码 *
public IActionResult Modify(Int64 id)
{
UserModel users = _user.GetAll(id);
ViewBag.businessUnit = new SelectList(_businessUnit.GetAll("A").Select(x => new
{
Value = x.BU_Code,
Text = x.BU_Name
}), "Value", "Text", users.BU_Code);
return View(users);
}
这是用户视图
<div class="col">
@Html.LabelFor(model => model.BusinessUnits, htmlAttributes: new { @class = "control-label" })
@Html.DropDownListFor(model => model.BusinessUnits, (IEnumerable<SelectListItem>)ViewBag.businessUnit, "Select Business Unit", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.BusinessUnits)
</div>
解决方案
在 usercontroller 的 Modify 操作中, ViewBag 变量应该是ViewBag.businessUnit而不是 ViewBag.businessUnits。请参阅下面的用户控制器代码。
public IActionResult Modify(Int64 id)
{
UserModel users = _user.GetAll(id);
ViewBag.businessUnit = new SelectList(_businessUnit.GetAll("A").Select(x => new
{
Value = x.BU_Code,
Text = x.BU_Name
}), "Value", "Text", users.BU_Code);
return View(users);
}
推荐阅读
- wagtail - 在 Wagtail 流场模板中,如何检查结构块内结构块的字段是否为空?
- javascript - Android 不提供 Geolocation ionic 4
- c++ - 将 '\\x00\\x00\\x00' 格式的字符串转换为无符号字符数组
- android - 在 RecycleView 中滑动以删除
- policy - XACML AuthzForce - 评估不是 XACML 3.0 格式的请求
- java - Java:如果值使用流匹配,则组合两个映射键
- javascript - Typescript中静态子类方法类型的类型
- vue.js - VeeValidate 全局使用自定义规则
- typescript - 在 VectorLayer 中以编程方式插入的样式函数不显示且不产生错误
- node.js - 无法从我的容器中下载 blob,如 @azure/storage-blob 文档中所示