asp.net-mvc – 如何在asp.net mvc中的关系表/模型中包含Applica
我试图在ApplicationUser和我添加了Step的表之间创建一个关系表.
我觉得我对于UserUser是什么以及用户管理器等的IdentityUser文章有点困惑. 这是我对该模型的尝试. public class UserStep { [ForeignKey("User")] public string UserId { get; set; } public int UserStepID { get; set; } public int StepID { get; set; } public virtual ApplicationUser User { get; set; } public virtual Step Step { get; set; } } 我已根据新信息调整了我的模型,但是我仍然不知道这是否正确.我可以用这个拉取用户步骤的索引: var userSteps = db.UserSteps.Include(u => u.Step).Include(u => u.User); return View(userSteps.ToList()); 但是我的目标是仅显示与当前用户相关的步骤.有关如何更改此选项以仅返回当前用户的任何建议? 更新 在userstep的控制器中,我添加了这个新方法并从中创建了一个视图(它爆炸了).我的目标是获取与当前用户关联的用户步骤列表.这不是您在更新2中描述的内容吗? public ActionResult UserStep() { var user = UserManager.FindById(User.Identity.GetUserId()); var userStepsList = db.UserSteps.Where(u => u.UserId == user.Id); return View(userStepsList); } 更新 – 工作版 IdentityModel中的ApplicationUser模型 添加 public virtual ICollection<UserStep> UserSteps { get; set; } UserStep模型 public class UserStep { [ForeignKey("User")] public string UserId { get; set; } public int UserStepID { get; set; } public int StepID { get; set; } public virtual ApplicationUser User { get; set; } public virtual Step Step { get; set; } } 步模型 添加 public virtual ICollection<UserStep> UserSteps { get; set; } 创建了userstep控制器并创建了一种新方法来查看用户特定的关系表. public ActionResult UserStep() { var user = UserManager.FindById(User.Identity.GetUserId()); var userStepsList = db.UserSteps.Where(u => u.UserId == user.Id).Include(u => u.Step).Include(u => u.User); return View(userStepsList); } 解决方法
您可以将Step对象作为扩展直接添加到ApplicationUser模型.
如果打开IdentityModel.cs,可以添加如下属性: public class ApplicationUser : IdentityUser { public virtual ICollection<Step> UserSteps { get; set; } public async Task<ClaimsIdentity> blah blah { blah } } 向子对象添加ID(引用父对象)如果我是你,我会通过添加属性public int UserId {get; set;}使ApplicationUser成为父对象(意味着ApplicationUser有一个或多个UserSteps),这样当您需要获取特定用户UserStep时,您可以通过使用用户ID查询db.Steps来实现. 希望这会有所帮助,对问题发表评论,我会尽快查看并提前回来查看. 更新1: 用户对ApplicationUser的引用的方式接近于您要添加到Step的内容.让它看起来更像这样……(在你的Step对象中) public int UserID { get; set; } [ForeignKey("UserID")] public virtual ApplicationUser User { get; set; } 我注意到你的[ForeignKey(“”)]声明与我的表达方式有所不同,我不确定你的方式是否错误,但我知道我的方式对我有用(在导航属性上有[ForeignKey()],而不是实际的模型属性) 我记得我与applicationuser的第一次关系真的很棘手,但是当你得到它时它是如此重要和令人满意. 更新2 回应你的评论…… 您将通过以下方式获取对用户的引用: var user = db.Users.Where(u => u.Id = parameterID) parameterID是传递给你获取UserSteps集合的ActionResult的id.如果您只想获取当前用户ID,请尝试以下操作: var user = UserManager.FindById(User.Identity.GetUserId()); 然后,您只需从该用户的ID中查询userSteps列表 var userSteps = db.UserSteps.Where(u => u.UserID == user.Id) 然后你可以返回View(userSteps),如果你有一个直接绑定UserStep对象列表的视图(如果我是你,我将如何显示这些). 希望这对你有用,我稍后再回来查看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 方法’Write’没有重载需要0个参数
- 什么可能导致asp.net应用程序忘记用户?
- asp.net – Ajax.ActionLink不工作,Response.IsAjaxRequest
- asp.net-mvc – asp.net mvc我可以有一个视图为多个动作方法
- asp.net-mvc – 使用Razor DropDownList的Bootstrap
- 在ASP.NET MVC4中自定义错误消息MVC的无效DateTime
- ASP.NET开发人员真的需要关心线程安全吗?
- asp.net-mvc – 发布重定向到ASP.NET MVC和验证与Restful U
- asp.net – 优雅地停止fastcgi-mono-server,网站内容更新,无
- asp.net – 如何使用命令行msbuild部署VS2012网站项目,而无