为什么Model只在MVC中声明?

时间:2014-07-07 03:32:45

标签: c# asp.net-mvc asp.net-mvc-4 mvvm

我是MVC的新手。根据MVC教程,Model是包含业务逻辑的类。但在我提到的所有示例中,Model仅包含声明(使用接口)。为什么模型不能包含业务逻辑的定义。由于我与MVVM模型进行了比较,其中Model包含定义。

为什么模型看起来像这样?

public interface IDBModel
{
    void addRecord();
    void deleteRecord();
}

而不是像下面那样。,

public Class DBModel
{
  void addRecord()
  {
       // Insert logic
  }

  void deleteRecord()
  {
       // Delete logic
  }
} 

请帮助我通过一些实时示例来理解MVC和MVVM中的“模型”目的。

3 个答案:

答案 0 :(得分:1)

模型旨在封装数据,使您可以更轻松地从应用程序的不同逻辑区域进行传输。您提供的第一个示例不正确,因为您正在使用方法定义接口。你更有可能看到一个看起来像这样的模型:

public class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName() {
        return string.Format("{0} {1}", FirstName, LastName);
    }
}

请注意,我使用属性作为传输数据的方法,但是有一个执行轻量级逻辑的方法(这也可以作为只读属性完成)。 90%的时间这是您的模型的样子。

答案 1 :(得分:1)

我认为MVC中的M更像是一个视图模型。它包含视图显示所需的所有属性和格式化逻辑。无需为其提供接口。

控制器负责根据从服务接收的模型构建该视图模型。

答案 2 :(得分:1)

我认为您误解了 Model

Worng: 模型是包含business logic(不是业务逻辑)的类。

模型: 模型对象是应用程序的一部分,用于实现 应用程序数据域的逻辑。 通常,模型对象检索并存储数据库中的模型状态。例如,Product对象可能从数据库中检索信息,对其进行操作,然后将更新的信息写回SQL Server中的Products表。

看看at official ASP.NET MVC Site

为什么模型看起来像这样?

您的申请可能会遵循某些不同的模式。除了MVVM。

实时示例/基本理解: Click Here