2015-01-15 4 views
0

뷰의 디스플레이 역할 이름 그래서 내가하고있어이 이 있습니다 내 모델의오류 동안은 사실 역할 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; } 
} 

이 내 컨트롤러

입니다
 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); 
    } 

이 오류 통해 내보기

@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> 

하지만입니다 "값은 null 일 수 없습니다. 매개 변수 이름 : 당신이 당신의 데이터베이스에는 사용자가없는 경우 소스 "

+0

을 당신이하지 않은 'null'과'var name = Model.Rrole.Where (...')가 에러를 던질 수 있도록 컨트롤러 ('Ruser' 만)의'Rrole' 값을 할당했습니다 –

답변

0

,이 줄은 오류가 발생합니다.

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

model.Ruser가 비어있는 경우 당신은 사건을 처리되지 않습니다