从MVC2开始,搞乱一个简单的数据库并只使用索引视图来显示如下项目:
在控制器中:
// // GET: /Equipment/ public ActionResult Index() { return View(database.Artists.ToList()); }
<td> <%: item.ArtistID %> </td> <td> <%: item.GenreID %> </td>
等等
在我的示例中,它可能没有填充此数据,因此它可能为空.现在当我尝试加载视图时,我将得到一个NullReferenceException.那么这个代码在哪里呢?
我想你可以在视图中有一个if语句,但肯定这不是逻辑应该去的地方.如果值为null,我应该创建一个只返回空字符串的html帮助器吗?
编辑:
谢谢您的帮助.
我有另一个问题.如果说我正在开发索引浏览类型页面怎么办?目前我在一页上显示所有项目,但有2k项目.是否有如何拆分的教程或示例?我想我的索引浏览控制器可以从浏览器中获取一个整数范围值,然后我只说显示下一个100
解决方法
当您返回艺术家列表时,您需要检查null并返回一个新的艺术家列表.
通过返回所谓的viewmodel,这是最好的完成IMO.
Class MyFormviewmodel List<Artist> artists {get; set;}
然后在你的控制器
MyFormviewmodel fvm = new MyFormviewmodel(); fvm.artists = database.Artists.ToList(); if (fvm.artists == null) fvm.artists = new List<Artist>(); return View(fvm)
然后您的视图继承自MyFormviewmodel
然后考虑分解cntroller中获取艺术家并将对象设置到另一层的逻辑
编辑
Formviewmodel的原因是因为如果你想添加其他东西来返回视图,你只需扩展模型就可以很容易地添加更多的部分视图等.
编辑2
如果您有部分viwe,请致电ArtistList,其中包含艺术家的完整列表.然后它简单地通过艺术家列表进行迭代,并呈现另一个PV调用,称艺术家,其被给予单个艺术家实例.
然后,您可以在Artist部分视图中对null进行简单检查.
或者您可以在ArtistList部分视图中检查空记录并渲染另一个名为NullArtist的PV.