2012-05-18 68 views
1
我有綁在模型視圖

循環:asp.net MVC 3視圖通過模型用foreach

@model IEnumerable<AJA.Models.DB.Article> 

所有我想要做的是遍歷模型做一些邏輯:

@foreach (var item in Model) 
{ 
    var article = item.article1; 
    if (article.Length > 500) 
    { 
     article = article.Substring(0, 500) + "..."; 
    } 

然而,當我執行搜索,錯誤:

exception: System.NullReferenceException: The reference of the object is not defined 
to an instance of the object. 

如果我做@Html.DisplayFor(modelItem => item.article1)獨自一人,我得到的文章好,但我想事先做好業務邏輯。

有什麼問題嗎?

+0

錯誤發生在哪裏? – SLaks

+1

你確定你正在爲你的模型分配一個'IEnumerable

'嗎?另外,你確定枚舉的每個元素都不爲null嗎?如果你有null元素,'item.article'可能是源錯誤。 – Tejs

+0

嗨,當我在@ Html.DisplayFor(modelItem => item.article1)在foreach中,我有字符串結果,這意味着不是空的沒有? – dtjmsy

回答

3

首先在您的視圖中,三重檢查以確保您正確使用您的ViewModel。

像這樣的東西應該是在你的視圖的頂部:

@model IEnumerable<AJA.Models.DB.Article> 

在控制器中設置一個斷點,並使用F10一路深入到你的瀏覽,你將能夠檢查的對象在你的View的foreach循環中。

某處沿線,你指望它有什麼對象爲空。找出那個對象是什麼。

@foreach (var item in Model) 
{ 
    var article = item.article1; //article1 may be null. Check it! 
    if (article.Length > 500) 
    { 
     article = article.Substring(0, 500) + "..."; 
    } 
} 
+0

嗨,很好的消化,在控制器(而不是視圖:)中設置斷點,並能夠看到問題來自哪裏:許多領域之一是空的,非常感謝你們所有人。 – dtjmsy