Asp.net mvc Html.DisplayFor通过返回空字符串的其他表进行查询

Asp.net mvc Html.DisplayFor通过返回空字符串的其他表进行查询,asp.net-mvc,asp.net-identity,code-first,Asp.net Mvc,Asp.net Identity,Code First,我在试图找出如何使用ASP.Net标识创建用户配置文件时遇到了一个障碍。我的数据库设置如下 ,其中Id位于AspNetUsers表UserPages的外键 我使用标准代码将模型传递到视图: public ActionResult View(string id) { UserPage userPage = db.UserPages.Find(id); (...) return View(userPage); } 我的模型: using System; using Syst

我在试图找出如何使用ASP.Net标识创建用户配置文件时遇到了一个障碍。我的数据库设置如下 ,其中
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)
在db
UserPages
中显示属性
AboutMe
。但当我试图通过模型从
AspNetUsers
获取数据时,如下所示:

@Html.DisplayFor(model => model.User.Name)

我只得到一个空字符串
User.Name
不可为空,并且该条目存在于数据库中。方法返回为空的原因是什么?如何解决此问题?

结果表明,我从未将
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)

来获取用户的任何属性,您使用什么样的控制器方法和查询来生成使用
@Html.DisplayFor(model=>model.user.Name)
?@StephenMuecke?我在原始帖子中发布了ActionResult。但这是从
UserPages
表中获取的值,而不是
AspNetUsers
表。您在视图中使用的模型是什么?@StephenMuecke我使用的是
Citrus.Models.UserPage
,您是否希望我们猜测该模型是什么?展示它。