以下是我正在阅读的关于MVC应用程序设计的一本书的摘录:
理想情况下,视图非常简单 无逻辑,几乎不需要 测试。用户(和开发人员之前 用户)可以合理地测试视图 只是看着上面的像素 屏幕。除了纯粹的任何其他东西 理想情况下,图形渲染应该是 从视图中取出并放入 控制器和型号。这个 包括,,例如,逻辑 确定是否有某个按钮 应启用或显示为灰色 某点。
大胆的陈述对你意味着什么?这会是什么样的?
感谢, 杆
答案 0 :(得分:1)
这是大胆的陈述对我意味着什么:
虽然我认为不应该在视图中进行分析,但应该设置条件,以便按钮只需要思考 - 显示或不显示。
例如。如果考生是男性,则仅显示考生详细信息按钮。
您要么创建一个viewmodel属性ShowExamineeDetails。该视图将检查这是否真的。
ShowExamineeDetails =是考生马?
代码应该在控制器中。
至于测试,我还没有找到一个“......几乎不需要测试......”的应用程序。
答案 1 :(得分:1)
决定何时启用或禁用按钮的逻辑应该驻留在控制器中,只需调用一个方法,例如 view.EnableContinueButton()来启用/禁用页面上的按钮。
启用/禁用页面本身按钮的实际代码应该在视图中实现,例如 EnableContinueButton()方法然后调用类似 btnContinue.Enable()的方法强>
简单地说,视图应该关注UI细节(显示/隐藏/启用/禁用UI元素)并将所有业务逻辑处理留给控制器。通过这种方式,控制器不需要关注UI元素,并且视图独立于实际业务逻辑而工作。
例如在Controller中,
public void ProcessOrder()
{
if (!controller.ValidateOrder(model.OrderNo))
view.EnableContinueButton(false);
else
// Process the order
...
}
并在视图中
public void EnableContinueButton(bool enabled)
{
btnContinueButton.Enabled = enabled;
}
坦率地说,我在MVC方面没有太多经验(不久前在一个项目中实现),但我希望控制器和视图之间的逻辑分离足够清晰。