了解模型视图和控制器之间的关系
Understanding relations between model view and controller
我阅读了很多关于 MVC 的资料,每一个的作用都或多或少很清楚。我还不明白的是它们之间的关系。我的意思是,我知道这些关系
但它们是如何实施的? MVC 框架中会发生什么?
我也有几个问题:
我读到 a view can't be coupled with the controller,换句话说,它里面不能有控制器对象,但是如果视图应该触发某些东西,它如何使用正确的控制器它?
如果模型的独特工作是表示数据,它如何更新视图?
业务逻辑是在controller里面还是在model里面?我读过相互矛盾的观点
MVC 的最基本解释是您拥有 3 层中的每一层。
型号
- 这包含您的数据。即数据库或一组 classes.
查看
- 这会向用户显示数据,即您的 HTML 页面。
- 包含用户交互控件。
控制器
- 所有对数据的访问都应该经过这一层。即从您的数据源(模型)加载数据并将数据保存到您的数据源。
- 在保存或加载之前执行任何数据操作。
这在理论上创建了关注点分离,允许您在任何一层中更改任何内容,而另一层不知情或不关心,从而使代码更易于维护和阅读。
在实践中,这可能会变得更加复杂,具体取决于您希望如何访问数据和显示数据,尽管基本原则仍然适用,偶尔意味着 MVC 模式的每个部分都可以由更小的部分组成。
就实施而言,一个很好的例子是 ASP.Net MVC http://www.asp.net/mvc。以下可能是使用 C# 通过 MVC 显示一些数据的简单实现。
模型(C#class)
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)
这将输出到网页上
全名:人 1
语法错误请见谅,未经测试
更详细post:http://www.tutorialspoint.com/design_pattern/mvc_pattern.htm
我阅读了很多关于 MVC 的资料,每一个的作用都或多或少很清楚。我还不明白的是它们之间的关系。我的意思是,我知道这些关系
但它们是如何实施的? MVC 框架中会发生什么?
我也有几个问题:
我读到 a view can't be coupled with the controller,换句话说,它里面不能有控制器对象,但是如果视图应该触发某些东西,它如何使用正确的控制器它?
如果模型的独特工作是表示数据,它如何更新视图?
业务逻辑是在controller里面还是在model里面?我读过相互矛盾的观点
MVC 的最基本解释是您拥有 3 层中的每一层。
型号
- 这包含您的数据。即数据库或一组 classes.
查看
- 这会向用户显示数据,即您的 HTML 页面。
- 包含用户交互控件。
控制器
- 所有对数据的访问都应该经过这一层。即从您的数据源(模型)加载数据并将数据保存到您的数据源。
- 在保存或加载之前执行任何数据操作。
这在理论上创建了关注点分离,允许您在任何一层中更改任何内容,而另一层不知情或不关心,从而使代码更易于维护和阅读。
在实践中,这可能会变得更加复杂,具体取决于您希望如何访问数据和显示数据,尽管基本原则仍然适用,偶尔意味着 MVC 模式的每个部分都可以由更小的部分组成。
就实施而言,一个很好的例子是 ASP.Net MVC http://www.asp.net/mvc。以下可能是使用 C# 通过 MVC 显示一些数据的简单实现。
模型(C#class)
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)
这将输出到网页上
全名:人 1
语法错误请见谅,未经测试
更详细post:http://www.tutorialspoint.com/design_pattern/mvc_pattern.htm