我目前拥有“DomainModel”,它通过EDMX处理所有SQL数据。
当我使用ASPX页面时,我能够使用以下代码:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<DomainModel.aspnet_Membership>>" %>
<% foreach (DomainModel.aspnet_Membership member in Model)
{
List<DomainModel.aspnet_Roles> roles = member.aspnet_Users.aspnet_Roles.ToList();
}
这通过domainModel返回了SQL DB中所有成员的列表。
这是我的测试,但现在要求我使用CSHTML剃刀页面。 (使用“@”代码块)
我试图实现类似的代码,但它总是会失败:
@model IEnumerable<DomainModel.aspnet_Membership>
@foreach (DomainModel.aspnet_Membership m in Model)
{
<b>@m.aspnet_Users.UserName</b>
}
编辑:错误:NullReferenceException未处理。 Obj引用未设置为对象的实例
控制器(我忘记添加此代码,现在发生相同的错误,但在控制器中)
private productName_SATEntities _context;
[HttpParamAction] [AcceptVerbs(HttpVerbs.Post)] public ActionResult Scenario() { return View(_context.SAT_Scenarios.ToList()); }
_Context链接到EDMX生成的内容
答案 0 :(得分:0)
不应该是:
@model IEnumerable<DomainModel.aspnet_Membership>
@{foreach (DomainModel.aspnet_Membership m in Model)
{
<b>@(m.aspnet_Users.UserName)</b>
}}
?我在{
语句周围添加了大括号(}
和foreach
)。否则编译器会认为您的页面上需要foreach
的值,这是一个编译时错误。
我还在(
附近添加了括号()
和m.aspnet_Users.UserName
)以使其更容易实现:它应该在没有它们的情况下工作,但随后我们隐式控制编译器将考虑服务器端代码(例如,它肯定不会在_
处中断。)