MVC如何处理缺少数据的要求

时间:2010-04-19 01:04:29

标签: model-view-controller

我正在教自己MVC概念,希望将它们应用于非OO /程序开发环境。我很确定我理解简单的视图 - >请求 - >控制器 - >请求 - >型号 - >回复 - >控制器 - >回复 - >查看流程。

我正在努力解决的是更复杂的场景。例如,假设我有一个带有“计算运费”按钮的购物车表格。通常,单击此按钮将遵循上述流程。但如果缺少数据,如邮政编码怎么办?视图是否应首先验证此信息并在进行“计算运输”请求之前提醒用户?或者是否应该发出请求并且模型返回关键数据丢失的通知?如果是后者,Controller是否会指示View提醒用户?如果我想提示用户输入缺失的邮政编码(可能是在弹出式输入显示中),然后再次自动请求“计算运费”方法,该怎么办?

我认为这会引发一个观点应该是多么聪明的问题。似乎MVC由于更丰富的用户界面和自动化(例如数据绑定)而发展,并且这从纯粹的MVC角度来看水。非常感谢任何想法。

2 个答案:

答案 0 :(得分:0)

你可以做一些事情:

  1. 使用Javascript或jQuery
  2. 验证客户端(在浏览器中)的邮政编码
  3. 向服务器发送Ajax请求以验证邮政编码,并让控制器将验证结果返回给浏览器,或
  4. 发布整个页面,验证它,如果缺少邮政编码,则向用户返回带有错误指示的同一页面。
  5. 提醒:一旦页面发布,您仍需要在服务器上再次验证数据。永远不要相信来自网页的数据,即使它已在客户端验证过。

答案 1 :(得分:0)

我自己的想法是,为了提高效率,尽可能在视图中进行,只要没有数据含义。

换句话说,视图可以检查丢失的邮政编码或非数字邮政编码(只要您确定数据模型不会允许非数字化)。

但是,您决定检查数据的第二个(例如“邮政编码是美国大陆的有效邮件吗?”),应该参考数据模型本身。

我见过使用一系列正则表达式创建视图以进行预验证(每个字段一个)的情况,以免对其他层造成不必要的负担。这意味着输入的数据至少会通过第一层完整性检查,然后再传回以进行更完整的验证。

另外,在提及检查用户输入内容时,不要在用户文档中使用术语“健全性检查”。您可能认为这是一个无辜的短语,但用户并不总是这么认为: - )