为了账号安全,请及时绑定邮箱和手机立即绑定

在 ASP.NET MVC 中填充下拉列表的正确方法

在 ASP.NET MVC 中填充下拉列表的正确方法

C#
千万里不及你 2022-01-09 16:03:16
这就是我从我的模型中实现下拉列表的方式。我只是想检查这是否是正确的方法还是有更简单的方法?看起来相当复杂。我的清单型号: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;    }
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

像这样试试


视图模型:


public class ApplicationRolesViewModel

{

    // Display Attribute will appear in the Html.LabelFor

    [Display(Name = "User Role")]

    public string RoleId { get; set; }

    public IEnumerable<SelectListItem> Roles { get; set; }

}

控制器:


public ActionResult NewRole()

    {

        var roleData = new IEnumerable<SelectListItem>();

        applicationRolesData.GetAllApplicationRoles().Foreach(x =>

                   roleData.Add( new SelectListItem

                        {

                            Value = x.RoleId.ToString(),

                            Text = x.ApplicationRoleName

                        });

       );

        ApplicationRolesViewModel ardlvm = new ApplicationRolesViewModel();

        ardlvm.Roles = new SelectList(roleData , "Value", "Text")

        return View("~/Views/Users/Modals/AddRole.cshtml", ardlvm);

    }

查看:


@model ApplicationRolesViewModel


@Html.LabelFor(m => m.RoleId)

@Html.DropDownListFor(m => m.RoleId, Model.Roles)

并获取当前选择的下拉列表值Jquery:


$('#RoleId').val();

要获取当前选定的文本:


$('#RoleId:selected').text();


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 307 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号