加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC Web应用程序中视图逻辑和域逻辑之间的混淆

发布时间:2020-12-15 21:01:15 所属栏目:asp.Net 来源:网络整理
导读:我在域/应用程序逻辑和用户界面逻辑之间感到困惑.为了说明我想要确定的内容,我将在下面描述一个虚构的程序用于说明目的: (1) 想象一个带有一组3级联下拉菜单的小应用程序.当您选择一个下拉列表时,它会触发一个jQuery Ajax GET,最终命中MVC控制器,提供先前选
我在域/应用程序逻辑和用户界面逻辑之间感到困惑.为了说明我想要确定的内容,我将在下面描述一个虚构的程序用于说明目的:

(1)
想象一个带有一组3级联下拉菜单的小应用程序.当您选择一个下拉列表时,它会触发一个jQuery Ajax GET,最终命中MVC控制器,提供先前选择的下拉列表的选定值.控制器返回下一个下拉列表的允许选择. javacript(在视图中)将这些结果排列为下拉列表.等等.因此,每次选择下拉列表时,都会填充下一个下拉列表.

(2)
现在扔扳手..有一些例外.假设用户在第一个下拉列表中选择“FOO”或“BAR”,则行为会发生变化,因此第二个下拉列表将被禁用,而thrid下拉列表将显示一个texbox.

我的问题是,在MVC的背景下,这个“决策”逻辑的适当位置是什么?比如负责做出这些决定的代码,就像我在(2)中解释的那样.我一直把它放在最方便的地方是在视图的javascript中.我只是编写了javascript来测试第一个框是“FOO”还是“BAR”然后,禁用第二个dropwdown,并换掉文本框的第三个下拉列表.但这对我来说并不合适.因为它似乎应该是业务逻辑,因此代码应该属于某个地方的域层.但这也不是很正确.

所以我觉得我要进入圈子.有人可以对这个小设计有所了解吗?

解决方法

没有分裂太多的头发或过于狂热,必须做什么来保持模式纯粹……

显然,Controller知道必须进行此更改,因为它将处理两个结果案例(下拉选择或文本输入).因此,在控制器中放入与此相关的逻辑并不是罪.

同样显而易见的是,View必须根据第一个下拉列表的内容更改其显示方式.虽然这种混合行为并不是我能想象到的最好的UI体验,但如果需要必须,那么这个逻辑必须在UI中存在一定程度.但是,jeez伙计们,这是我们在这里讨论的网站.你真的想从javascript中删除所有逻辑并将其移动到控制器方法中吗? View正在决定如何显示数据,这是它的工作,所以不能成为罪.

避免被焚烧的真正方法是重新设计以避免争议.或者,只需对它进行编码,并对啤酒的糟糕设计要求嗤之以鼻.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读