我试图弄清楚如何使用ASP.Net Identity制作用户个人资料时遇到了障碍。我有我的数据库设置
this,其中Id
AspNetUsers
表UserPages
的外键。
我正在使用标准代码将模型传递给视图:
public ActionResult View(string id)
{
UserPage userPage = db.UserPages.Find(id);
(...)
return View(userPage);
}
我的模特:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
using System.Web.WebPages.Html;
namespace Citrus.Models
{
public class UserPage
{
[Key]
public string Id { get; set; }
[ForeignKey("Id")]
public ApplicationUser User { get; set; }
public string AboutMe { get; set; }
public string AvailableTime { get; set; }
}
}
然后在视图中我可以使用
@Html.DisplayFor(model => model.AboutMe)
在数据库AboutMe
中显示属性UserPages
。但是,当我尝试通过模型从AspNetUsers
获取数据时,如下所示:
@Html.DisplayFor(model => model.User.Name)
我只回来一个空字符串。 User.Name
不可为空,并且该条目存在于数据库中。该方法返回空的原因是什么,如何解决?
答案 0 :(得分:0)
原来我从未将AspNetUsers
包含在UserPages
查询中。
UserPage userPage = db.UserPages.Find(id);
使用以下代码替换我的查询可以解决问题:
UserPage userPage = db.UserPages.Include(x => x.User).Where(x => x.Id == id).FirstOrDefault()
我现在可以使用@Html.DisplayFor(model => model.User.Property)