asp.net-mvc – 如何在asp.net mvc中的关系表/模型中包含ApplicationUser
|
我试图在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将C#对象传递给Javascript
- 在IIS托管的asp.net Web应用程序中打开页面时“无法找到资源
- asp.net – 检查IE浏览器 – .NET
- .net – asp:GridView文本框始终返回空值
- asp.net-mvc-3 – “..必须从WebViewPage或WebViewPage”在
- asp.net – RequiredFieldValidator – 如何摆脱默认的红色
- asp.net-membership – 使用SQL提供程序获取ASP.NET成员资格
- asp.net-core – Asp.net vNext中的bindingRedirect
- asp.net-mvc – 如何使用MVC3 Razor布局页面?
- asp.net – HTML属性bgcolor已被弃用:使用什么?
- asp.net-mvc – 获取Route,ASP.net MVC中的当前片
- asp.net-mvc – 在部署MVC 2 Web应用程序时要绝对
- asp.net-mvc – 获取索引值razor foreach
- ASP.net HttpRequest上的静态HttpClient线程安全
- asp.net – 在IIS 7.5上挂在Session模块上的请求
- asp.net – IIS URL重写模块url为小写
- asp.net – 如何序列化LINQ-to-SQL惰性列表
- asp.net-mvc – ASP.NET MVC应用程序性能分析
- 在ASP.NET中的OpenID认证?
- asp.net-mvc – ASP.NET MVC URL解码
