UI层向业务层返回什么?

2024-02-10

我正在编写一个 ASP.NET 应用程序,它有 UI 层、业务逻辑层和数据访问层。我从数据层将业务对象返回到业务逻辑层,并将它们传递到 UI 层。但是,当我想使用 UI 层的数据执行保存/插入时,我不确定该怎么做。

我应该在 UI 层创建业务对象并传递到业务层,还是应该在业务层中创建它?

非常感谢


我同意 crunchdog 的观点——除了最琐碎的 Web 应用程序之外的所有应用程序,您都应该有一个专门针对 UI/视图层的业务对象的扁平化形式。有时,这被称为视图模型类,通常只包含几个字符串属性,UI 层可以直接获取和放入这些属性,而无需担心验证。 (看ASP.NET MVC http://www.asp.net/mvc/)

其一,这使 UI 层更加干净和简单,使其将精力放在显示数据上,而不是遍历对象结构、检查和解释空值等。

这也使业务层有机会对这些字符串值进行验证,如果输入的值无效则返回输入的值。例如,当您的服务器必须处理日期字段中的无效日期时,这可以减少编码的麻烦。业务层识别出无效值,可以将它们与正确的错误消息一起返回。如果您处理的只是业务/域对象,那么输入的某些值可能并不总是适合用于保存它们的对象。

它还可以帮助指定一个类来在业务/域对象和 UI 对象/视图模型之间来回映射值。这有助于保持业务层关注点的清晰分离。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UI层向业务层返回什么? 的相关文章

随机推荐

  • Xpath 表达式正确匹配文本,但修剪前导和尾随空格

    我的硒测试需要一个 xpath 表达式来获取此元素 td class label Order Date td 但不是这个 td class label Order Dates td 我尝试了这两个 text Order Date text
  • 如何在页面加载时提交表单而不单击提交按钮?

    有没有办法让表单提交 onload 而不点击 用 PHP 提交按钮 我看到了一些用 Javascript 制作它的方法 但我喜欢 php 并且我喜欢用 php 制作它 例如
  • AngularJS:ui网格在单元格中显示多行

    我正在尝试在一个单元格中显示多个电话号码 我想在新行中显示每个数字 我尝试了多种方法 但我无法弄清楚 有人能帮忙吗 下面是我的 plnkr 的链接 http plnkr co edit LXdiDqoOAYQoO5BW02WR p prev
  • Android 计算应用程序/进程的线程数

    我需要监视应用程序的行为并收集有关如何创建 销毁线程的统计信息 我知道 DDMS 有一个线程视图 可以实时显示此信息 但是我可以通过命令行获取相同的信息吗 我想创建自己的工具来记录这些信息并对其进行处理 澄清 我正在寻找的是一个可以通过 A
  • 显示自定义 ASP.NET 错误页面而不重写 URL

    目前正在为我的 ASP NET 网站处理错误页面 如果服务器无法找到请求的页面 我将使用 Web 配置文件将用户重定向到错误页面 以下是我在配置文件中使用的 customErrors 标记
  • 检测文档高度变化

    我试图检测我的document高度变化 一旦完成 我需要运行一些函数来帮助组织我的页面布局 我不是在寻找window onresize 我需要整个文档 它比窗口大 我如何观察这种变化 更新 2020 年 10 月 调整大小观察者 https
  • Nodejs中何时关闭MongoDB数据库连接

    通过 Node MongoDB 本机驱动程序使用 Nodejs 和 MongoDB 需要检索一些文档 并进行修改 然后将其保存回来 这是一个例子 db open function err db db collection foo funct
  • urllib.parse Python2.7 等效项

    Python2 7相当于什么 from urllib parse import urlparse parse qs parsed url urlparse url params parse qs parsed url query I get
  • Meteor 加载脚本、特定于页面的 CSS

    我目前遇到的问题是 我希望能够只执行特定的脚本和 CSS 文件 因为如果在错误的页面上执行 它会在浏览器控制台中产生错误 我正在为 Meteor 使用 Iron router 仅使用基本代码即可使其工作 现在 有没有一种方法可以让我将脚本作
  • 如何在不排序的情况下执行UNION? (SQL)

    UNION连接两个结果并删除重复项 同时UNION ALL不删除重复项 UNION并对最终输出进行排序 我想要的是UNION ALL没有重复 也没有排序 那可能吗 这样做的原因是我希望第一个查询的结果位于最终结果的顶部 第二个查询位于底部
  • Symfony 和 FOSUserBundle:3 种不同的配置文件,具体取决于角色

    I ve a User class User id username password email 和三个不同的roles与不同的个人资料字段 1 Teacher teachingSince aboutMe classes 2 Pupil
  • 如何使用twitter api获取twitter用户的电子邮件地址

    我想在我的网站上放置一个 使用 Twitter 登录 的插件 并且在用户允许我的 Twitter 应用程序访问其数据后 我的网站需要获取用户的 twitterID 和电子邮件 我浏览了 Twitter 开发文档 但似乎总是关于 OAuth
  • opencv/c++ 中正确的阈值函数

    我是图像处理和 opencv 的新手 我需要对灰度图像进行阈值处理 该图像包含0到1350之间的所有值 我想保留所有大于100的值 我在opencv中找到了这个函数 cv threshold Src1 Last 100 max BINARY
  • 在工作副本中动态更改 SVN+SSH URI 中的用户名

    我正在使用 SVN SSH 从 SVN 服务器上签出存储库的工作副本 该服务器上的所有开发人员都是 SVN 服务器的成员 developer组并对存储库目录和关联元数据具有完全读 写权限 svn co svn ssh email prote
  • Kubernetes 集群中的 Coredns 处于挂起状态 [已关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我正在尝试配置 2 节点 Kubernetes 集群 首先 我尝试在 CentOS VM 上配置集群的主节点 我已使用 kubeadm
  • 无法在 azure 容器实例中将 azure 文件共享装载为 mongodb 卷

    我正在尝试使用 azure 容器实例设置 mongo DB 实例并将其安装在 Azure 文件共享上 我们收到以下错误 initandlisten WiredTiger error 1 1579245437 724939 1 0x7f941
  • 在 Nativescript 和 Angular Schematics 的共享代码中找不到模块

    我正在使用 Angular 和 Nativescript Schematics 我已经安装了nativescript ui sidedrawer 当我跑步时 tns run ios bundle 本机版本已编译并部署到设备 但是当我运行时
  • doall dorun dideq 和 for 函数有什么区别?

    功能有什么区别doall dorun doseq and for 我发现一些信息分散在互联网上 但我认为最好将这些信息集中在这里 dorun doall and doseq都是为了强制惰性序列 大概是为了产生副作用 dorun 强制返回时不
  • 使用 NSPredicate 按对象属性过滤

    我有一个可变的自定义对象数组 例如 我想按对象的属性过滤该数组myObject attributeOne 如何创建 NSPredicate 来使用 myArrayOfObjects filterUsingPredicate
  • UI层向业务层返回什么?

    我正在编写一个 ASP NET 应用程序 它有 UI 层 业务逻辑层和数据访问层 我从数据层将业务对象返回到业务逻辑层 并将它们传递到 UI 层 但是 当我想使用 UI 层的数据执行保存 插入时 我不确定该怎么做 我应该在 UI 层创建业务