我在.NET4.5上有一个ASP.NETMVC页面.

以下是我的代码模型类:

public class UserDetail
{
    public Int64 UserID { get; set; }
    [Required]
    [EmailAddress]
    public string LoginID { get; set; }
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    public bool Status { get; set; } = true;
    public DateTime LastLoginTime { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime UpdatedOn { get; set; }
    // Columns for Mapping
    [Range(1,int.MaxValue, ErrorMessage = "Select a Valid Group Value")]
    public int GroupID { get; set; }
    public string Group { get; set; }
    [Range(1, int.MaxValue, ErrorMessage = "Select a Valid Role Value")]
    public int RoleID { get; set; }
    public string Role { get; set; }
}

public class User视图Model
{
    public UserDetail User { get; set; } = new UserDetail();
    public IEnumerable<SelectListItem> Groups { get; set; }
    public IEnumerable<SelectListItem> Roles { get; set; }
}

视图

@model MyApp.Models.User视图Model
<label for="ddl_role" class="font-weight-bold">Select Role</label>
                    @Html.DropDownListFor(x => x.User.RoleID, Model.Roles, "Choose...", new { id = "ddl_role", @class = "form-control form-control-sm" })

控制器操作方法

public ActionResult SomeName()
{
    var viewmodel = new User视图Model();
    viewmodel.Groups = Helper.GetSelectListItems(nameof(viewmodel.Groups));
    viewmodel.Roles = Helper.GetSelectListItems(nameof(viewmodel.Roles));
    viewmodel.User = Helper.GetData();

    return 视图(viewmodel);
}

viewmodel.User = Helper.GetData()提取UserDetail对象的数据,viewmodel.Groupsviewmodel.Roles都是SelectListItemIEnumerable,它们包含文本和值字段.

但是当我加载视图时,下拉菜单总是显示‘Choose...’.作为选定值,即使Model.User.RoleID被限定为反映数据,SelectList也存在,但它不显示通过Model.User.RoleID设置的选定值

有什么暗示我可能遗漏了什么吗?

推荐答案

您必须以User.RoleID为基础设置所选值.

viewmodel.Roles = Helper.GetSelectListItems(nameof(viewmodel.Roles));
viewmodel.Roles = viewmodel.Roles.Select(item => 
{
    item.Selected = (item.Value == viewmodel.User.RoleID.ToString());
    return item;
});

Csharp相关问答推荐

VB.Net的SON模式导致集合代码不工作

LINQ无法翻译SQLFunctions方法

编写DataAnnotations自定义验证器的多种方法

在多对多关系上不删除实体

C#.NET依赖项注入顺序澄清

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

Azure Redis缓存与Entra ID身份验证

自动映射程序在GroupBy之后使用项目

如何在C#中使用Postman中的本地IP向本地主机上运行的本地API发出请求

VS 2022 for ASP.NET Core中缺少自定义项模板

是否有必要在ASP.NET Core中注册可传递依赖项?

依赖项注入、工厂方法和处置困境

将FileStream的特定部分作为字节数组读取

JSON串行化程序问题.SQLite中的空值

.NET Google Workspace API获取错误CS0266

Cmd中的&ping.end()";有时会失败,而";ping";总是有效

.NET文档对继承的困惑

在.Net 8 Visual Studio 2022中启用本机AOT发布时发布失败

我什么时候不应该在Dispose中调用EgSuppressFinalize(This)?

将两个JSON文件与覆盖值的主文件合并