1、MVC 分页
借助ViewData来在页面上进行数据库数据的展示:
对数据库数据执行删除操作
2、
dynamic 和 var 的区别
dynamic 运行时确定类型
var 编译时确认类型
3、
强类型视图,自动添加CRUD(创建读写的MVC5模板)
4、路由规则的匹配
当存在多个路由时,会从上到下依次匹配。如果匹配不上就报错
<p>@{Html.ActionLink(Name,Action,Controller,routeValues,htmlAttrs)}</p>
如果httpAttr有c#关键字,用@在前面转义
5、讲解MVC中的HtmlHelper
1)Html.TextBox/DropDownList/RadioButton
2) 表单
@{ ViewBag.Title = "Index"; } <h2>Index of Demo</h2> <div> @{ using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { id = "form1", enctype=""})) { // 表单标签 } } </div>
3)表单校验
6、部分类
https://www.cnblogs.com/mdnx/archive/2012/10/29/2745564.html
部分类可用于解决使用ef entityfirst后修改模型导致模型重新生成属性丢失的问题。
这是ef生成的实体类
这是个新建的部分类,部分类实+实际上是同一个类
7、MVC使用AJAX
借助jquery进行AJAX操作
JavaScriptSerializer 类
定义
应对 Json.NET 使用序列化和反序列化。 为启用 AJAX 的应用程序提供序列化和反序列化功能。
8、mvc中特有的使用ajax方式
Ajax.BeginForm
9、路由规则
需要引入System.Web.Routing
为路由添加参数
一个路由实例分析,越详细的路由越定义在前面
{*values}表示匹配任意字符串与格式
10、区域
网站后台放在区域内
用户访问的放在外边
11、Filter过滤器
1)方法过滤器
用户在地址栏输入地址并请求,在服务器响应相应的
方法之前,执行一些操作。
常用于进行登录验证,权限控制等场景(例如Session登录校验)
使用方法:
在Model目录下添加类,名称必须以Attribute结尾
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace EFDemo01.Models { public class DemoFilterAttribute:ActionFilterAttribute { // 过滤器方法在Action执行前执行 public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.HttpContext.Response.Write(@"<div>该方法在Action执行前执行</div>"); base.OnActionExecuting(filterContext); } // 过滤器方法在Action执行后执行 public override void OnActionExecuted(ActionExecutedContext filterContext) { filterContext.HttpContext.Response.Write(@"<div>该方法在Action执行后执行</div>"); base.OnActionExecuted(filterContext); } // 过滤器方法在结果渲染前执行 public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Write(@"<div>该方法在Result执行前执行</div>"); base.OnResultExecuting(filterContext); } // 过滤器方法在结果渲染后执行 public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.Write(@"<div>该方法在Result执行后执行</div>"); base.OnResultExecuted(filterContext); } } }
使用时,当做属性来使用
using EFDemo01.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace EFDemo01.Controllers { public class DemoController : Controller { // GET: Demo [DemoFilter] public ActionResult Index() { return Content("渲染结果"); } } }
结果:
如果将该特性标签添加到控制器前,将对该控制器下所有的方法生效
重定向的写法:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace EFDemo01.Models { public class DemoFilterAttribute:ActionFilterAttribute { // 过滤器方法在Action执行前执行 public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } //需要跳转到的 controller 对应的 action }); base.OnActionExecuting(filterContext); } } }
12、Razor补充
1)Razor模板在@{}可以写c#代码,也可以写html代码段
2)编译输出Html代码:@MVCHtmlString.Create()
3)设置强类型视图:
ViewData.Model 就是UserInfo类型
4)注释:
@**@
5)主体页填充模板页section: