2011-09-08 50 views
1

我目前有我的「DomainModel」,它可以通過EDMX處理所有的SQL數據。ASP MVC3 - DomainModel&Razor - 顯示來自數據庫的信息

當我用了一個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數據庫中的所有成員的名單。

雖然這是爲了我的測試,但現在需要使用CSHTML剃鬚刀頁面。 (使用 「@」 的代​​碼塊)

我試圖實現類似的代碼,但它總是倒下:

@model IEnumerable<DomainModel.aspnet_Membership> 
@foreach (DomainModel.aspnet_Membership m in Model) 
{ 
<b>@m.aspnet_Users.UserName</b> 
} 

編輯:錯誤:NullReferenceException異常是未處理的。物鏡參考不設置爲一個對象

控制器的實例(I忘了添加該代碼中,現在出現同樣的錯誤,但是在控制器)

private productName_SATEntities _context;[HttpParamAction] [AcceptVerbs(HttpVerbs.Post)] public ActionResult Scenario() { return View(_context.SAT_Scenarios.ToList()); } _Context鏈接到由EDMX

生成的內容
+0

你會得到什麼錯誤? – Timbo

+0

NullReferenceException未處理。 Obj引用未設置爲對象的實例 – JustAnotherDeveloper

+1

NullReferenceException看起來好像沒有將模型傳遞到視圖中。你能向我們展示你的控制器行動代碼 – Daveo

回答

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,使現場更加容易:它應該工作,沒有他們,但後來我們含蓄地控制哪些編譯器會考慮服務器端代碼(它絕對不會在_突破,爲實例)。

+0

不可以,nout錯誤的剃刀語法,不需要阻止for循環。有趣的野獸剃刀有時候! :) – Timbo

+0

我總是這樣做,不要對剃刀給予太多控制,你知道。依靠自己總是更好。 –

+0

感謝您指出,從來沒有想到的!不幸的是我仍然得到同樣的錯誤。模型總是在foreach中返回null – JustAnotherDeveloper