控制器的3个重要作用
【1】获取数据
【2】业务执行(根据要求调用相关的模型)
【3】返回视图(或者跳转到其他的动作方法)
MVC的规范(约定)
1、请求转接:请求的URL被web容器接收后,首先根据路由表判断url请求格式(路线)是否合理,对于合理的请求,会分析出对应的“控制器”和“动作方法”,然后把处理权分配下去。
2、视图寻找:View()方法是默认的方法,如果什么都没写,默认返回的是与“动作方法同名的视图”如果不一样,请显式的写出视图名称。视图寻找的时候,是根据当前控制器同名的“子文件夹”中去找对应的视图。
3、代码约定:控制器必须以Controller结尾。视图必须发放到Views文件夹中,并且是与控制器同名的子文件夹中。
第2讲:Razor视图
Razor-@基本语法:
第3讲:
3、总结几种数据传递方法
【1】ViewData:适合单个数据传递,需要类型转换。
【2】ViewBag:适合单个数据传递,不需要类型转换。
Control 中保存: ViewBag.courseList = courseList,
View中使用:foreach (Course item in ViewBag.courseList)或者
Models.course courselist=ViewBag.courseList
【3】TempData:主要是用来跨多个动作方法之间传递数据。
Course控制器的ActionResult ReturnLogin()方法:保存和跳转
TempData["returnInfo"] = "我们和常老师学会了TempData的使用!";
//跳转到另一个控制器,而不是视图
return RedirectToAction("AcceptReturn","Teacher");
View使用:
public ActionResult AcceptReturn()
{
//接收通过控制器传递的数据
ViewBag.Rinfo = TempData["returnInfo"];
return View("ReturnInfo");
}
【4】View() +Model :适合传递模型数据,不需要类型转换。
Control中传递:
//为了使用强类型视图,我们需要使用View()方法的重载,传递对象
Course course = new CourseManager().QueryCourseById(courseId);
return View("CourseDetailModel", course);
View中使用