MVC2 - 逻辑应该去的基本问题

bar*_*ron 6 asp.net visual-studio-2010 visual-studio asp.net-mvc-2

从MVC2开始,搞乱一个简单的数据库并只使用索引视图来显示如下项目:

在控制器中:

    //
    // GET: /Equipment/

    public ActionResult Index()
    {
        return View(database.Artists.ToList());
    }
Run Code Online (Sandbox Code Playgroud)

然后在视图中自动生成代码:

        <td> <%: item.ArtistID %> </td>
        <td> <%: item.GenreID %> </td>
Run Code Online (Sandbox Code Playgroud)

等等

在我的示例中,它可能没有填充此数据,因此它可能为空.现在当我尝试加载视图时,我将得到一个NullReferenceException.那么这个代码在哪里呢?

我想你可以在视图中有一个if语句,但肯定这不是逻辑应该去的地方.如果值为null,我应该创建一个只返回空字符串的html帮助器吗?

编辑:

谢谢您的帮助.

我有另一个问题.如果说我正在开发索引浏览类型页面怎么办?目前我在一页上显示所有项目,但有2k项目.是否有如何拆分的教程或示例?我想我的索引浏览控制器可以从浏览器中获取一个整数范围值,然后我只说显示下一个100

gri*_*egs 3

当您返回艺术家列表时,您需要检查是否为空并返回新的艺术家列表。

在我看来,最好的实现方法是返回所谓的 ViewModel。

Class MyFormViewModel
    List<Artist> artists {get; set;}
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中

MyFormViewModel fvm = new MyFormViewModel();

fvm.artists = database.Artists.ToList();
if (fvm.artists == null) fvm.artists = new List<Artist>();
return View(fvm)
Run Code Online (Sandbox Code Playgroud)

那么你的视图继承自MyFormViewModel

然后考虑分解控制器中获取艺术家并将对象设置到另一层的逻辑

编辑

使用 FormViewModel 的原因是因为如果您想添加其他内容以返回视图,您只需扩展模型即可轻松添加更多部分视图等

编辑2

如果您有部分视图,请调用 ArtistList 来获取完整的艺术家列表。然后它只是遍历艺术家列表并渲染另一个 PV 调用,例如 Artist,它被赋予一个艺术家实例。

然后,您可以在 Artist 部分视图中执行简单的检查是否为空。

或者您可以在 ArtistList 部分视图中检查空记录并渲染另一个名为 NullArtist 的 PV。