控制器(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] /// <summary> /// 3.2修改 - 执行修改 /// </summary> /// <param name="model"></param> /// <returns></returns> public ActionResult Modify(Models.Student model)//模型绑定:.NetMVC框架会在调用action方法前,创建 参数model对象,并从请求报文中检查看是否有与该对象属性同名的 数据,如果有,则 设置给 该对象同名的属性 { DbEntityEntry entry = db.Entry<Models.Student>(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
<html> <head> <meta name="viewport" content="width=device-width" /> <title>TransData</title> </head> <body> <div> @ViewBag.GzItcast <br /> @ViewData["HnItcast"] <br /> @ViewBag.HnItcast <br /> @ViewData["GzItcast"]<br /> @TempData["USAItcast"]<br /> @Model.CName<br /> @ViewData.Model.CName </div> </body> </html>
时间: 2024-10-19 16:17:17