MVC学习二:Controller和View关系

2021-07-02 15:04

阅读:497

YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

标签:文件夹   方式   ice   lis   返回值   arp   entry   port   dynamic   

控制器(Controller)主要是定义方法和加载视图(View)

1.控制器中的Action方法返回值的类型ActionResult,string

2.控制器中Action方法接收浏览器参数方式:

2.1.通过 URL路由中配置的同名参数 --url: "{controller}/{action}/{id}",//Stu/Del/1

public ActionResult Del01(int id)

2.2.通过 Request.Form/Request.QueryString

    [HttpPost]
        public ActionResult Modify()
        {
            //model.Id
            //model.Name
            Request.Form["Name"]

            return Redirect("/stu/index");
        }     
    [HttpGet]
        public ActionResult Modify()
        {
            //model.Id
            //model.Name
            Request.QueryString["Name"]

            return Redirect("/stu/index");
        }     

2.3.通过 FormCollection 

        public ActionResult Modify2(FormCollection from)
        { 
            //from["Name"]
            return null;
        }  

 

2.4.通过 模型绑定 --View中所有空间的名称必须和模型中属性名一致,一般是post过来的才能接收

        [HttpPost]
        /// 
        /// 3.2修改 - 执行修改
        /// 
        /// 
        /// 
        public ActionResult Modify(Models.Student model)//模型绑定:.NetMVC框架会在调用action方法前,创建 参数model对象,并从请求报文中检查看是否有与该对象属性同名的 数据,如果有,则 设置给 该对象同名的属性
        {
            DbEntityEntry entry = db.Entry(model);
            entry.State = System.Data.EntityState.Unchanged;
            entry.Property("Name").IsModified = true;
            entry.Property("CId").IsModified = true;
            db.SaveChanges();

            return Redirect("/stu/index");
        }     

视图加载方式:

//--------------------------------------2.0 加载指定视图-----------------------------------
        public ViewResult LoadViewBySelf()
        {
            return View();
            //1.0 通过指定 视图名 加载 指定的视图:此视图 必须在 当前控制器同名 的文件夹中
            //return View("LoadTarget");
            //2.0 通过指定 视图路径 加载指定的视图:基于根目录
            return View("~/Views/Home/List.cshtml");
        }

控制器向View传递数据

1.控制器类对象创建视图类对象,并把控制器类中的属性ViewBag、ViewData、TempData、Model值赋值给视图类对象的属性ViewBag、ViewData、TempData、Model

2.ViewBag、ViewData在视图类对象中互相共享的

3.Model是ViewData的Model属性

        public ViewResult TransData()
        {
            ////动态数据类型,类似与JS里的对象。
            ////但是因为 此种对象是在运行时才知道对象的类型,所以编译器和VS都无法推断并产生 智能提示
            //dynamic obj = new object();
            //dynamic Cla = new ClaController();
            //dynamic num = 1;
            ////动态数据类型 可以动态 添加属性
            //obj.AA = 123;
            //int a = obj.AA;

            //3.1 ViewBag
            ViewBag.GzItcast = "广州传智播客~~~!";
            //3.2 ViewData
            ViewData["HnItcast"] = "湖南传智播客~~~!";
            //3.3 TempData
            TempData["USAItcast"] = "美国传智播客~~~!";
            //3.4 Model
            Models.Class modelClass = new Models.Class() { CName="德国传智播客~~!" };

            ViewData.Model = modelClass;//return View(modelClass)就是把modelClass赋值给控制器对象ViewData属性的Model属性
            return View();
        }

Views

TransData
@ViewBag.GzItcast
@ViewData["HnItcast"]
@ViewBag.HnItcast
@ViewData["GzItcast"]
@TempData["USAItcast"]
@Model.CName
@ViewData.Model.CName

  

 

MVC学习二:Controller和View关系

标签:文件夹   方式   ice   lis   返回值   arp   entry   port   dynamic   

原文地址:http://www.cnblogs.com/WarBlog/p/7127574.html


评论


亲,登录后才可以留言!