Asp.net mvc Html.DisplayFor通过返回空字符串的其他表进行查询
我在试图找出如何使用ASP.Net标识创建用户配置文件时遇到了一个障碍。我的数据库设置如下 ,其中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
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)
在dbUserPages
中显示属性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
,您是否希望我们猜测该模型是什么?展示它。