理论:
先有GUI在发展,当用户按下某个键,某个进程会监听到这个动作,这个进程就是控制器。这就是MVC模式。
后来有了事件驱动编程,响应动作的是按钮本身,而不是控制器。
再后来webForm中,事件驱动需要通过隐藏域保存页面的状态。看起来提交一次没有变化,实际上经历了保存状态、销毁页面、服务端处理、恢复页面几个过程,究其本质,是因为web是无状态的。
最后的MVC,由用户提交一个请求,控制器选择相应视图,操纵模型,然后反馈给用户
控制器把视图渲染成html或其他,再由浏览器解释html。浏览器无法直接渲染视图。
ViewBag是ViewData的动态封装器,没有太大差异。
知识点:
HttpUtility.HtmlEncode(string) 可以对传入的string进行处理,避免被注入js代码或者html标记。
Html.Raw(string) 可以把返回的string当作html来解释
Ajax.JavaScriptStringEncode 向浏览器输出JS字符串编码
Controller/Action/id 路由默认有id的参数
@@ 若要输出@符号,可用两个@转义
返回视图
return View("Index"); 返回该目录下的另一个视图
return View("~/Views/Home/Index.cshtml"); 使用~/完整路径来返回指定视图
返回分部视图
return PartialView();
js中:
$(function(){
$("#result").load("/Home/message");
});
在视图中引用命名空间
1、可以@using Project.Entity
2、可以在Views目录下的webConfig文件中声明
默认布局页
如果选的是使用布局的视图,默认布局页在Views/_ViewStart.cshtml里可以改
分部视图和常规视图差不多,只是没有<html>和<head>