首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模型和控制器之间的关注点分离

模型和控制器之间的关注点分离
EN

Stack Overflow用户
提问于 2014-07-23 04:09:29
回答 5查看 707关注 0票数 3

我仍然在努力理解这种关注点的分离,有一件事我不明白,那就是模型和控制器在数据修改方面的区别。

假设我有一个简单的模型:

代码语言:javascript
运行
复制
public class BankAccount
{
    private decimal amount;
    public decimal Amount
    {
        get
        {
            return amount;
        }
        private set
        {
            amount = value;
        }
    }

    public BankAccount(decimal amount)
    {
        Amount = amount;
    }

    public decimal DepositMoney(decimal amount)
    {
        Amount += amount;
        return amount;
    }

    public decimal WithdrawMoney(decimal amount)
    {
        Amount -= amount;
        return amount;
    }
}

我相信这就是模型的全部内容。但是,我在哪里调用这些方法呢?它是在一个控制器里面吗?我可以在那里修改数据吗?例如,如果我想把一些钱从Jim转到Joe;我会从控制器调用这个方法joe.DepositMoney(jim.WithdrawMoney(25));吗?或者我应该创建一个在模型中转移资金的方法,并只调用这个方法?

EN

Stack Overflow用户

发布于 2014-07-23 14:11:03

似乎有很多关于模型和视图模型的混淆。MVC的主要观点是

  1. 您有一个具有操作(方法)的控制器(类)。操作响应用户输入(例如,HTTP请求)。
  2. 控制器生成一些包含需要呈现的数据的对象-该对象称为视图模型。视图模型定义了必须呈现什么,但没有定义它应该如何呈现。
  3. 视图模型被传递给一个。视图负责“包装”视图模型并生成适当的内容来表示它--通常它会生成超文本标记语言。

实际上,这就是ASP.NET MVC的全部内容。你有一个控制器,你创建一个View Model,你把它传递给View,然后View生成一些表示。

然而,模型是一个非常容易混淆的术语。它通常用于描述View Model数据的来源。这里的好实践是让所有逻辑在控制器之外处理;为此,您应该有一个服务层。服务基本上应该为View Models生成适当的数据,并在必要时执行适当的逻辑。所以,总而言之,这应该是这样的:

视图控制器对用户输入做出反应,确定具体发生了什么,并将所有相关数据传递到适当的service.

  • Service包含所有逻辑并生成可用于响应用户的数据input.

  • Controller使用此服务生成的数据来创建视图模型。

  • 视图模型被传递到视图并呈现
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24896921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档