Asp.net mvc 4 在视图中显示角色名称时出错

Asp.net mvc 4 在视图中显示角色名称时出错,asp.net-mvc-4,Asp.net Mvc 4,实际上,我想显示一个角色名来代替角色id 所以我要这么做 这些是我模特的 [Table("User")] public class User { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } [Required(ErrorMessage = "Please Provide Fullname", Allo

实际上,我想显示一个角色名来代替角色id 所以我要这么做 这些是我模特的

    [Table("User")]
public class User
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    [Required(ErrorMessage = "Please Provide Fullname", AllowEmptyStrings = false)]
    [Display(Name = "Full Name")]
    public string Full_Name { get; set; }
    [Required(ErrorMessage = "Please Provide Username", AllowEmptyStrings = false)]
    public string Username { get; set; }
    [Required(ErrorMessage = "Please provide password", AllowEmptyStrings = false)]
    [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
    public string Password { get; set; }
    [Required(ErrorMessage = "Please Select User type", AllowEmptyStrings = false)]
    [Display(Name = "USER TYPE")]
    public int ROLEID { get; set; }
    [Required(ErrorMessage = "Please Select Login Status", AllowEmptyStrings = false)]
    [Display(Name = "Login Status")]
    public string Login_Status { get; set; }
    public List<Role> role { get; set; }
    UserDB db = new UserDB();
    public Role getname(int id) {
        return db.roles.SingleOrDefault(d => d.ROLEID == id);
    }
}
    [Table("ROLE")]
public class Role
{
    public int ROLEID { get; set; }
    public string ROLENAME { get; set; }
}

public class UserRole 
{
    public List<User> Ruser { get; set; }
    public List<Role> Rrole { get; set; }
}
[表(“用户”)]
公共类用户
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId{get;set;}
[必需(ErrorMessage=“请提供全名”,AllowEmptyStrings=false)]
[显示(Name=“全名”)]
公共字符串全名{get;set;}
[必需(ErrorMessage=“请提供用户名”,AllowEmptyStrings=false)]
公共字符串用户名{get;set;}
[必需(ErrorMessage=“请提供密码”,AllowEmptyStrings=false)]
[数据类型(System.ComponentModel.DataAnnotations.DataType.Password)]
公共字符串密码{get;set;}
[必需(ErrorMessage=“请选择用户类型”,AllowEmptyStrings=false)]
[显示(Name=“用户类型”)]
public int ROLEID{get;set;}
[必需(ErrorMessage=“请选择登录状态”,AllowEmptyStrings=false)]
[显示(Name=“登录状态”)]
公共字符串登录\u状态{get;set;}
公共列表角色{get;set;}
UserDB=newuserdb();
公共角色getname(int id){
返回db.roles.SingleOrDefault(d=>d.ROLEID==id);
}
}
[表(“角色”)]
公共阶级角色
{
public int ROLEID{get;set;}
公共字符串ROLENAME{get;set;}
}
公共类用户角色
{
公共列表Ruser{get;set;}
公共列表错误{get;set;}
}
这是我的控制器

        public ActionResult Userlist(int? page)
    {
        UserDB dc = new UserDB();
        List<User> users = dc.users.ToList();
        UserRole userrole = new UserRole();
        userrole.Ruser = users;
        return View(userrole);
    }
public ActionResult用户列表(int?页)
{
UserDB dc=new UserDB();
List users=dc.users.ToList();
UserRole UserRole=新的UserRole();
userrole.Ruser=用户;
返回视图(userrole);
}
这是我的看法

 @model PHARMACY.Models.UserRole  


<table class="table table-striped table-hover ">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Ruser.First().Full_Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Ruser.First().Username)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Ruser.First().Password)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Rrole.First().ROLENAME)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Ruser.First().Login_Status)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model.Ruser) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Full_Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Username)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Password)
        </td>
        <td>
            @{
            var name = Model.Rrole.Where(i => i.ROLEID == item.ROLEID);
            @Html.DisplayFor(m => m.Rrole.Where(i => i.ROLEID == item.ROLEID).FirstOrDefault());
            }       
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Login_Status)
        </td>
        <td>
            <p class="label label-info">@Html.ActionLink("Edit", "EditUser", new { id=item.UserId,})</p> |
            <p class="label label-danger">@Html.ActionLink("Delete", "DeleteUser", new { id=item.UserId })</p>
        </td>
    </tr>
}

</table>
@model PHARMACY.Models.UserRole
@DisplayNameFor(model=>model.Ruser.First().Full_Name)
@DisplayNameFor(model=>model.Ruser.First().Username)
@DisplayNameFor(model=>model.Ruser.First().Password)
@DisplayNameFor(model=>model.Rrole.First().ROLENAME)
@DisplayNameFor(model=>model.Ruser.First().Login\u状态)
@foreach(Model.Ruser中的var项){
@DisplayFor(modelItem=>item.Full\u名称)
@DisplayFor(modelItem=>item.Username)
@DisplayFor(modelItem=>item.Password)
@{
var name=Model.Rrole.Where(i=>i.ROLEID==item.ROLEID);
@DisplayFor(m=>m.Rrole.Where(i=>i.ROLEID==item.ROLEID.FirstOrDefault());
}       
@DisplayFor(modelItem=>item.Login\u状态)

@Html.ActionLink(“编辑”,“编辑用户”,新的{id=item.UserId,})

|

@Html.ActionLink(“删除”,“删除用户”,新的{id=item.UserId})

}
但它通过一个错误“值不能为空”。
参数名称:source“

如果数据库中没有用户,此行将导致错误:

@Html.DisplayNameFor(model => model.Ruser.First().Full_Name)

您没有处理
model.Ruser
为空的情况。

您没有在控制器中分配
Rrole
的值(仅
Ruser
),因此其
null
var name=model.Rrole。其中(…
引发错误