2012-05-18 45 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