itcastMVC 02

 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:

原文地址:https://www.cnblogs.com/Tanqurey/p/12459638.html