【发布时间】:2018-09-09 14:53:40
【问题描述】:
这就是我从模型中实现下拉菜单的方式。我只是想检查这是否是正确的方法还是有更简单的方法?看起来很复杂。
我列表的型号:
public class ApplicationRolesDropdownListDetailViewModel
{
public String RoleId { get; set; }
public String ApplicationRoleName { get; set; }
}
进入我的视图的视图模型
public class ApplicationRolesDropdownListViewModel
{
public SelectList Roles { get; set; }
}
获取项目列表并将其放在视图中的下拉列表中的控制器:
public ActionResult NewRole()
{
var applicationRoles = applicationRolesData.GetAllApplicationRoles();
ApplicationRolesDropdownListViewModel ardlvm = new ApplicationRolesDropdownListViewModel();
ardlvm.Roles = new SelectList(applicationRoles, "RoleId", "ApplicationRoleName");
return View("~/Views/Users/Modals/AddRole.cshtml", ardlvm);
}
我的观点:
<div class="form-group">
@Html.DropDownListFor(m => m.Roles,Model.Roles, new { @id = "role", @class = "dropdown" })
</div>
另外,当我通过 javascript 从列表中选择一个项目时,我似乎无法获取 RoleId。
编辑:添加了我的 GetApplicationRoles
public List<ApplicationRolesDropdownListViewModel > GetAllApplicationRoles()
{
List<ApplicationRolesDropdownListViewModel > data = new List<ApplicationRolesDropdownListViewModel >();
try
{
var applicationRoles = dbContext.AspNetRolesExtendedDetails.ToList();
data = (from ar in applicationRoles
join a in dbContext.AspNetApplications
on ar.ApplicationId equals a.Id
select new ApplicationRolesDropdownListViewModel
{
RoleId = ar.Id,
ApplicationRoleName = ar.Name + " ( " + a.Name + " )"
}).ToList();
}
catch (Exception e)
{
logger.Error(e, AspNetEventLogs.NotFound);
}
return data;
}
【问题讨论】:
-
您无法获取角色 ID,因为您的模型是针对整个列表的,而不是单个项目
-
我应该调整什么?我对最后一步感到很困惑。
-
我建议加入 CodeReview.StackExchange 并在那里提出这个问题。在这里它很可能被关闭为“基于意见”。
标签: javascript c# jquery asp.net asp.net-mvc