我想做的是
的UserRole:
public class UserRolesController : Controller
{
private HMSEntities db = new HMSEntities();
//
// GET: /UserRoles/
public ActionResult Index()
{
User user = (User)Session["User"];
var usr = db.Users.Find(user.Id);
ViewBag.Id = usr.Id;
ViewBag.FirstName = usr.FirstName;
if (Session["User"] != null)
{
var role = db.Roles.Where(u => u.Id == user.RoleId);
}
return View(usr);
}
Index.cshtml
@model IEnumerable<HMS.Models.User>
@using HMS.Models;
在此项目中,当用户登录时,用户可以查看其详细信息,然后对该用户的角色执行crud操作,但是我收到错误:
传递到字典中的模型项是类型的 'System.Data.Entity.Infrastructure.DbQuery
1[HMS.Models.Role]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [HMS.Models.User]'。
我的模特是:
Role.cs
public partial class Role
{
public Role()
{
this.Users = new HashSet<User>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
User.cs
public partial class User
{
public User()
{
this.Accesses = new HashSet<Access>();
this.Doctors = new HashSet<Doctor>();
this.Patients = new HashSet<Patient>();
this.Staffs = new HashSet<Staff>();
}
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Nullable<System.DateTime> DOB { get; set; }
public Nullable<int> Age { get; set; }
public Nullable<int> PhoneNo { get; set; }
public Nullable<int> LandlineNO { get; set; }
public Nullable<bool> Status { get; set; }
public string PermentAddress { get; set; }
public string TemproryAddress { get; set; }
public string BloodGroup { get; set; }
public string Gender { get; set; }
public string EducationFinal { get; set; }
public string Experience { get; set; }
public string EmailId { get; set; }
public byte[] Image { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public Nullable<int> RoleId { get; set; }
public virtual ICollection<Access> Accesses { get; set; }
public virtual ICollection<Doctor> Doctors { get; set; }
public virtual ICollection<Patient> Patients { get; set; }
public virtual Role Role { get; set; }
public virtual ICollection<Staff> Staffs { get; set; }
}
我是mvc的新手,不知道还能做什么。如果需要任何进一步的代码,请告诉我们并回复。
答案 0 :(得分:0)
db.Roles.Where(u => u.Id == user.RoleId);
返回DBQuery:
您必须将其转换为List或Enumerable。
ViewBag.role = db.Roles.Where(u => u.Id == user.RoleId).AsEnumerable();
return View(ViewBag.role);
如果您使用List:或
ViewBag.role = db.Roles.Where(u => u.Id == user.RoleId).ToList();
你不需要放入ViewBag:
var roles = db.Roles.Where(u => u.Id == user.RoleId).AsEnumerable();
return View(roles);
在您的视图中将模型从用户更改为角色:
@model IEnumerable<HMS.Models.User>
至Roles
@model IEnumerable<HMS.Models.Roles>
修改强>
您将在此LINE上返回一系列可用角色:if (usr != null) return View(ViewBag.role);
不是用户。
如果要返回用户和角色,则必须在用户模型中包含角色。
控制器中有这样的东西:
var usr = db.Users.Find(user.Id);
usr.Roles = db.Roles.Where(u => u.Id == user.RoleId).ToList();
return View(usr);
然后在视图中:
@model HMS.Models.User
@foreach(var role in Model.Roles){
<p>@role.RoleId</p>
}