理解模型视图和控制器之间的关系

时间:2015-04-01 15:02:43

标签: model-view-controller

我经历了很多关于MVC的阅读,以及这些内容的含义或多或少都是清楚的。我还没有理解他们的关系。我的意思是,我知道这些关系

mvc relationships

但他们是如何实施的?在MVC框架中会发生什么?

我也有几个问题:

  • 我读到了a view can't be coupled with the controller,换句话说,它内部没有控制器对象,但是如果一个视图应该在其中触发某些内容,它如何使用正确的控制器?

  • 如果模型的唯一作业是表示数据,模型如何更新视图?

  • 控制器或模型中的业务逻辑是什么?我阅读了相互矛盾的观点

1 个答案:

答案 0 :(得分:1)

MVC最基本的探索是你拥有3层中的每一层。

<强>模型

  • 这包含您的数据。即数据库或一组类。

查看

  • 这会向用户显示数据,即HTML页面。
  • 包含用户互动的控件。

<强>控制器

  • 所有数据访问都应通过此层。即从数据源(模型)加载数据并将数据保存到数据源。
  • 在保存或加载之前执行任何数据操作。

这在理论上创建了一个关注点分离,允许您在任何一层中更改任何内容,而不需要其他层知道或关心更易于维护和读取的代码。

在实践中,这可能会变得更加复杂,具体取决于您希望如何访问数据并显示它,尽管基本原则仍然适用,偶尔意味着MVC模式的每个部分都可以由较小的部分组成。

在实施它方面,一个很好的例子是ASP.Net MVC http://www.asp.net/mvc。以下可能是使用C#通过MVC显示一些数据的简单实现。

模型(C#类)

public class Person{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

<强>控制器

public ActionResult Index(){
    return View(new Person() { FirstName = "Person", LastName = "1" });
}

查看(Index.cshtml)

@model Person

Full name: @Html.Raw(Model.FirstName + " " + Model.LastName)

这将输出到网页

全名:Person 1

请原谅我没有经过测试的语法错误。

更详细的帖子:http://www.tutorialspoint.com/design_pattern/mvc_pattern.htm