标签: model-view-controller

MVC模型对象,域对象和DTO之间有什么区别

MVC模型对象,域对象和DTO之间有什么区别?

我的理解是:

MVC模型对象:

为相应视图显示的数据建模.它可能不直接映射到域对象,即可能包括来自一个或多个域对象的数据.

  1. 客户端
  2. 可能包含业务逻辑.例如.验证,计算属性等
  3. 没有持久性相关的方法

域对象:

用于对问题域中的现实世界对象进行建模的对象,如预留,客户,订单等.用于保存数据.

  1. 服务器端
  2. 没有业务逻辑

DTO(数据传输对象):

当层处于单独的进程中时,用于在层之间传输数据的对象,例如从DB到客户端应用程序.在获取与多个域对象相对应的数据时,允许跨线的单个事务而不是多个调用.DTO仅包含数据和访问器方法,并且不存在逻辑.该数据用于特定的DB事务,因此它可以或可以不直接映射到域对象,因为它可以包括来自一个或多个域对象的数据.

  1. 在层之间传递时,在服务器端和客户端使用
  2. 没有业务逻辑
  3. 没有持久性相关的方法

所以,问题:

  1. 以上理解是否正确?我错过了一些关键点吗?

  2. 是否有任何理由不使用Domain对象作为MVC模型,假设Model对象不需要额外的业务逻辑?

  3. 是否有任何理由不使用DTO作为MVC模型,假设Model对象不需要额外的业务逻辑?

architecture model-view-controller model dto

62
推荐指数
6
解决办法
2万
查看次数

当用户离开页面时在angularjs中显示警报

我是一个有角度的新蜜蜂.我正在尝试编写一个验证,在用户尝试关闭浏览器窗口时提醒用户.

我的页面v1和v2上有2个链接.当点击指向特定页面的链接时.这是重定向到v1和v2的代码

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'])

.config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/v1', {templateUrl: 'pages/v_1.html', controller: MyCtrl1});
        $routeProvider.when('/v2', {templateUrl: 'pages/v_2.html', controller: MyCtrl2});
        $routeProvider.otherwise({redirectTo: '/v1'});
}]);
Run Code Online (Sandbox Code Playgroud)

当用户点击v1"他即将离开v1,如果他想继续"并且点击v2时,我想弹出一条消息.任何关于如何实现这一点的指示将不胜感激.

我在这里得到了一个答案,但它会在每个时间间隔后弹出消息.

更新的代码;

控制器

function MyCtrl1() {
    $scope.$on('$locationChangeStart', function (event, next, current) {
        if ('your condition') {
            event.preventDefault();

            MessageService.showConfirmation(
                'Are you sure?',
            MessageService.MessageOptions.YES_NO, {
                'YES': function () {
                    blockNavigation = false;
                    $location.url($location.url(next).hash());
                    $rootScope.$apply();
                },
                'NO': function () {
                    MessageService.clear();
                    $log.log('NO Selected')
                }
            });
        }
    });
}
MyCtrl1.$inject = [];


function MyCtrl2() {}
MyCtrl2.$inject = …
Run Code Online (Sandbox Code Playgroud)

javascript model-view-controller angularjs angularjs-directive

58
推荐指数
4
解决办法
12万
查看次数

什么是模型视图演示者?

有人可以用尽可能简单的方式解释Model View Presenter模式是什么吗?与模型视图控制器有什么区别?哪个最好或用于哪个目的?

model-view-controller mvp design-patterns

56
推荐指数
3
解决办法
3万
查看次数

Angular2:MVC,MVVM还是MV*?

由于其双向数据绑定功能,Angular one或多或少遵循MVV*设计原则.

Angular2正在采用基于组件的UI,这是React开发人员可能熟悉的概念.从某种意义上说,Angular 1.x控制器和指令模糊了新的Angular 2 Component.

这意味着在Angular 2中没有控制器也没有指令.相反,组件有一个选择器,它对应于组件将表示的html标签,而@View则指定要填充的组件的HTML模板.

Angular2仍然实现双向数据绑定,但不包含模型,例如,如果我有一个@Component显示文章列表和一个class定义文章对象的模型:

class Article {
title: string;
link: string;
votes: number;

constructor(title: string, link: string, votes?: number){
    this.title = title;
    this.link = link;
    this.votes = votes || 0;
}
Run Code Online (Sandbox Code Playgroud)

这在MVC模式中将被视为模型.

那么考虑到这个Angular最接近的设计模式呢?

model-view-controller mvvm angular

56
推荐指数
6
解决办法
5万
查看次数

将JSF理解为MVC框架

我正在阅读JSF,我觉得为什么JSF是一个MVC框架(或者至少哪个部分属于哪个"字母")我感到很困惑.

我看了一下这个问题:JSF MVC框架中哪些组件是MVC?

我在那里阅读如果你不在聚合视图中查看模型是你的实体,视图是你的XHTML代码而控制器是托管bean.嗯......好的,但视图通常不依赖于执行进一步的业务逻辑调用,这些调用返回一组实体,例如,描述是否仍然适合?

我读过的一本书将其描述为托管bean,是Faces Servlet(Controller)用于调用业务层(Model)的某种"消息"bringer,然后XHTML代码就是视图.

有太多的解释和差异,所以我不知道哪个或如何理解它.

java model-view-controller jsf java-ee

54
推荐指数
3
解决办法
5万
查看次数

如何在ASP.NET MVC中获取控制器中的路由名称?

ASP.NET MVC路由在映射时具有名称:

routes.MapRoute(
    "Debug", // Route name -- how can I use this later????
    "debug/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = string.Empty } );
Run Code Online (Sandbox Code Playgroud)

有没有办法获取路由名称,例如上面的例子中的"Debug"?我想在控制器的OnActionExecuting中访问它,以便我可以在调试时在ViewData中设置内容,例如,通过在/ debug /前面添加一个URL ...

model-view-controller asp.net-mvc routing

53
推荐指数
1
解决办法
3万
查看次数

DDD和MVC:'模型'和'实体'之间的区别

我对MVC中"模型"的概念感到非常困惑.今天存在的大多数框架将模型放在Controller和数据库之间,而模型几乎就像数据库抽象层.随着Controller开始做越来越多的逻辑,'Fat Model Skinny Controller'的概念就丢失了.

在DDD中,还有域实体的概念,它具有唯一的身份.据我了解,用户是实体的一个很好的例子(例如,唯一的用户ID).实体有一个生命周期 - 它的值可以在整个动作过程中改变 - 然后它被保存或丢弃.

我上面描述的实体是我认为模型应该在MVC中的内容?我有多偏离基础?

为了使事情更加混乱,你会引入其他模式,例如Repository模式(可能会在其中放置一个Service).很清楚Repository如何与实体交互 - 它与模型有什么关系?

控制器可以有多个模型,这使得模型看起来像一个"数据库表"而不是一个独特的实体.

更新: 在这篇文章中,模型被描述为具有知识的东西,它可以是单数或对象的集合.所以听起来更像是一个实体,一个模型或多或少都是一样的.模型是一个包罗万象的术语,其中实体更具体.值对象也是一个模型.至少在MVC方面.也许???

所以,从非常粗略的角度来看,哪个更好?

没有"模特"真的......

class MyController {
    public function index() {
        $repo = new PostRepository();
        $posts = $repo->findAllByDateRange('within 30 days');
        foreach($posts as $post) {
            echo $post->Author;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者这个,它有一个模型作为DAO?

class MyController {
    public function index() {
        $model = new PostModel();
        // maybe this returns a PostRepository?
        $posts = $model->findAllByDateRange('within 30 days');
        while($posts->getNext()) {
            echo $posts->Post->Author;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这两个例子都没有做我上面描述的内容.我很丢失.有什么输入?

php model-view-controller entity domain-driven-design model

53
推荐指数
3
解决办法
2万
查看次数

ASP.NET MVC Url.Action将当前路由值添加到生成的URL

我在这里已经多次看到过这个问题,但是没有一个问题可以接受:

ASP.NET MVC @ Url.Action包括当前路由数据
ASP.NET MVC隐式添加路由值

基本上我有一个名为Group的动作方法的Controller,它有一个不接收参数的重载并显示一个元素列表,另一个接收一个id并显示该组的详细信息.

如果我做这样的事情:

Url.Action("Group", "Groups");
Run Code Online (Sandbox Code Playgroud)

从网站的主页面(/)它返回一个这样的网址:

"mysite.com/Groups/Group"
Run Code Online (Sandbox Code Playgroud)

没关系现在,如果站点的当前地址是/ Groups/Group/1并且我调用相同的方法

Url.Action("Group", "Groups");
Run Code Online (Sandbox Code Playgroud)

返回的网址是这样的:

"mysite.com/Groups/Group/1"
Run Code Online (Sandbox Code Playgroud)

它会在生成URL时自动为当前页面添加路由值.即使我这样生成URL:

Url.Action("Group", "Groups", null);
Run Code Online (Sandbox Code Playgroud)

因此,明确指定我不想要任何路由值,生成的URL是相同的.要获取我想要的地址,我必须将路由值显式设置为空字符串,如下所示:

Url.Action("Group", "Groups", new {id=""});
Run Code Online (Sandbox Code Playgroud)

这将生成以下URL:

"mysite.com/Groups/Group"
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么会发生这种情况?如果我没有设置任何路由值,则不应将它们添加到生成的URL中.

url model-view-controller asp.net-mvc routing

53
推荐指数
1
解决办法
3万
查看次数

使用MVC和DAO模式在JSP页面中以HTML格式显示JDBC ResultSet

我正在使用JSP和JDBC实现MVC.我已将数据库类文件导入到我的JSP文件中,并且我想显示数据库表的数据.我不知道应该如何ResultSet从Java类返回到JSP页面并将其嵌入HTML中.

我怎样才能做到这一点?

java model-view-controller jsp servlets jdbc

52
推荐指数
4
解决办法
6万
查看次数

嵌入式语句不能是声明或带标签的语句

我正在尝试使用声明身份asp.net创建用户我在创建声明身份用户时遇到此错误.

  ApplicationUser user = new ApplicationUser { 
                        EmailConfirmed = true, 
                        UserName = model.myUser.Email,
                        Email = model.myUser.Email ,
                        PhoneNumber = model.myUser.PhoneNumber,
                        PhoneNumberConfirmed = true,
                        UserImagePath = model.myUser.UserImagePath,
                        FirstName= model.myUser.FirstName,
                        LastName = model.myUser.LastName,
                        DateOfBirth = model.myUser.DateOfBirth,
                        Culture = model.myUser.Culture,
                        Role = model.myUser.Role
                    };
Run Code Online (Sandbox Code Playgroud)

但是当代码是

var user= new ApplicationUser { 

                            UserName = model.myUser.Email,
                            Email = model.myUser.Email ,

                        };
Run Code Online (Sandbox Code Playgroud)

它工作得很好,所以我想知道出了什么问题

c# model-view-controller claims-based-identity

52
推荐指数
2
解决办法
5万
查看次数