gpt4 book ai didi

asp.net - MVC2 - 逻辑应该去哪里的基本问题

转载 作者:行者123 更新时间:2023-12-02 16:57:17 25 4
gpt4 key购买 nike

从 MVC2 开始,使用一个简单的数据库,仅使用索引 View 来显示以下项目:

在 Controller 中:

    //
// GET: /Equipment/

public ActionResult Index()
{
return View(database.Artists.ToList());
}

然后 View 中自动生成的代码:

        <td> <%: item.ArtistID %> </td>
<td> <%: item.GenreID %> </td>

等等等等

在我的示例中,该数据可能尚未填充,因此可能为空。现在,当我尝试加载 View 时,我将收到 NullReferenceException。那么这个代码应该放在哪里呢?

我猜你可以在 View 中包含一个 if 语句,尽管这肯定不是逻辑应该去的地方。我是否应该创建一个 html 帮助程序,如果值为 null,则仅返回空字符串?

编辑:

感谢您的帮助。

我还有另一个疑问。如果说我正在开发一个索引浏览类型页面怎么办?目前我在一页上显示所有项目,但大约有 2k 个项目。有没有关于如何拆分它的教程或示例?我想我的索引浏览 Controller 只能从浏览器获取整数范围值,然后我只是说显示下一个 100

最佳答案

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

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

Class MyFormViewModel
List<Artist> artists {get; set;}

然后在你的 Controller 中

MyFormViewModel fvm = new MyFormViewModel();

fvm.artists = database.Artists.ToList();
if (fvm.artists == null) fvm.artists = new List<Artist>();
return View(fvm)

然后你的 View 继承自MyFormViewModel

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

编辑

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

编辑2

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

然后您可以在 Artist 部分 View 中进行简单检查是否为 null。

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

关于asp.net - MVC2 - 逻辑应该去哪里的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com