ASP MVC3 - DomainModel&剃刀 - 显示数据库中的信息

时间:2011-09-08 12:23:30

标签: asp.net-mvc asp.net-mvc-3 razor

我目前拥有“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生成的内容

1 个答案:

答案 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)以使其更容易实现:它应该在没有它们的情况下工作,但随后我们隐式控制编译器将考虑服务器端代码(例如,它肯定不会在_处中断。)