MVC基础入门(二)

Mvc在学习《Headfirst》的时候,就接触过了。对于这个庞大的模式。非常的感兴趣。Mvc就是设计模式的升华。

    在没有接触过Mvc的时候,一直都是在使用的三层架构,使用的UBD三层来做项目。对于这个新接触的名词,还是很陌生的。所以需要来逐渐的来学习,如何使用Mvc。

    首先,MVC是在web开发上面提出的。所以要对比一下,web方式与mvc方式的区别。

    MVC(模型Model-视图View-控制器Controller)是一种软件架构模式。 当我们看到Model的时候,很容易就想到 在三层里面的实体层。首先需要知道的是,同样是Model,代表的是不同的意思。

    在MVC中,Model存放的是业务逻辑和数据访问,所做的工作相当于之前使用的B层和D层。

View代替了三层中的U层。也就是负责展示。

    三层中:U->B->D   是这么个顺序。

    MVC中:V    M 单独存在,使用C来对  V和M进行整合。

这个控制器Controller,负责把用户的请求转发给M,经过M处理之后,找到对应的V,然后把界面显示出来。

Webfrom页面的访问模式:

MVC的访问方式:

MVC基础入门(二)_第1张图片

    所以MVC中,Controller中一定有相应的View对应。

而一个控制器中可以有多个方法,但每个方法都对应一个视图。

保证控制器下的方法,与View下面的视图相对应。

MVC基础入门(二)_第2张图片

下面用一个例子,用mvc实现一下。

首先,是mvc例子的资源列表。

MVC基础入门(二)_第3张图片

1、创建Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using csdnblog.Models;
namespace csdnblog.Controllers
{
  public class HomeController : Controller
  {
    //创建一个数据集合(伪数据)
    List<Models.Dog> list = null;
    #region 0.1 初始化数据集合 +oid InitData()
    /// <summary>
    /// 初始化数据集合
    /// </summary>
    public List<Models.Dog> InitData()
    {
      list = new List<Models.Dog>() { 
        new Dog(){ID=1,Name="Dog1:xiaohei~"},
        new Dog(){ID=2,Name="Dog2:xiaobai~"},
        new Dog(){ID=3,Name="Dog3:xiaocai~"},
        new Dog(){ID=4,Name="Dog4:xiaoyang~"},
      };
      return list;
    }
    #endregion
    public ActionResult Index()
    {
      System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);
      //2.1处理当前业务(比如读取数据库,判断等)
      //2.2创建一个数据集合(伪数据),获取数据
      List<Models.Dog> list = InitData();
      //2.1.2遍历集合,生成html代码,存入stringBuilder
      list.ForEach(d =>
      {
        sbHtml.AppendLine("<div>" + d.ToString() + "</div>");
      });
      //2.2使用viewBag传输数据给  同名 index.cshtml 视图
      //viewBag是一个dynamic类型集合,可以动态添加任意类型的任意名称的属性和值
      ViewBag.HtmlStr = sbHtml.ToString();
      //2.3加载同名视图index.cshtml
      return View();
    }
    public ActionResult Index2()
    {
      return View();
    }
  }
}
2、建立处理逻辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace csdnblog.Models
{
  public class Dog
  {
    public int ID { get; set; }
    public string Name { get; set; }
    public override string ToString()
    {
      return "ID=" + this.ID + ",Name=" + this.Name;
    }
  }
}
3、生成试图:

MVC基础入门(二)_第4张图片

@{
  Layout = null;
}
<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width" />
  <title>Index</title>
</head>
<body>
  <div>
    @Html.Raw(ViewBag.HtmlStr)
  </div>
</body>
</html>

    以上就是Mvc的最简单的例子。主要是熟悉 各个层所提供的职责。

    总结:mvc架构模式,将视图层和业务层分离。这样就允许更改试图层代码而不用重新编译模型和控制器。同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。期待在项目中练习一下。

你可能感兴趣的:(mvc)