gpt4 book ai didi

asp.net-mvc - 在 ViewModel 中放入什么

转载 作者:行者123 更新时间:2023-12-03 21:42:48 25 4
gpt4 key购买 nike

你在你的 View 中放了什么?

最近的 blog来自 Scott Hanselman关于使用特殊的模型粘合剂更容易测试让我想到了以下几点:
您在构建 View 模型的 Controller 逻辑中放置了什么,应该在 View 中放置什么?他所做的是:

var viewModel = new DinnerFormViewModel {  
Dinner = dinner,
Countries = new SelectList(PhoneValidator.Countries, dinner.Country)
};
return View(viewModel);

现在,我使用相同的方式将数据传递给我的 View ,但我不确定他如何处理 Country 属性。你可以争论双方:
在 SelectList 中包装国家列表可以为 View 准备数据,就像您创建 View 模型 DTO 来传递数据一样。
另一方面,感觉就像您在专门操作要在下拉列表中使用的数据,从而限制了 View 处理来自 Controller 的数据的方式。
我觉得这在 View 和 Controller 之间的关注点分离上有点灰色地带,我真的无法决定走哪条路。有没有这方面的最佳实践?

PS:为简单起见,让我们假设默认的 ASP.NET MVC 上下文,所以基本上是您的开箱即用项目。默认 View 引擎和所有爵士乐。

最佳答案

在 MVC 中(至少是这种风格), Controller 的职责之一是为 View 准备数据。所以我认为为 View 消费准备一个特定的模型是完全可以接受的,这意味着它将在下拉列表中使用。在这种情况下, Controller 只是让 View 更容易,实际上可以防止笨拙的代码不得不流入 View 。它还可以防止在 ViewData 中出现像 VieData["Countries"] 这样的魔法字符串。

总而言之,虽然在职责方面似乎存在一些灰色地带,但最终这就是 Controller 的工作:与 View 交互并将域模型转换为其他更容易被 Controller 使用的模型。看法。

关于asp.net-mvc - 在 ViewModel 中放入什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526641/

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