MVC 5学习总结笔记1
01.使用MVC自带的DataAnnotations实现数据验证
public class ExternalLoginConfirmationViewModel
{
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
}
自定义数据验证功能(用法及定义):
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web; namespace MVC5.Models
{
public class Employee
{
[Key]
public int EmployeeId { get; set; } [FirstNameValidation]
public string FirstName { get; set; }
[StringLength(,ErrorMessage="Last name length should not more than 5!")]
public string LastName { get; set; }
public int Salary { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web; namespace MVC5.Models
{
public class FirstNameValidation:ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null)
{
return new ValidationResult("Please input FirstName");
}
else
{
if (value.ToString().Contains("@"))
{
return new ValidationResult("The first name should not contains @!");
}
}
return ValidationResult.Success;
}
}
}
02.Model Binder
在.NET的核心MVC中,Model Binder用于映射从HTTP请求到Action方法的参数,可以参考链接
创建自定义 Model Binder ,代替默认的Model Binder.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MVC5.Models
{
public class MyEmployeeModelBinder:DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext,ModelBindingContext bingingContext,Type modelType)
{
Employee emp = new Employee();
emp.FirstName = controllerContext.RequestContext.HttpContext.Request["FName"].ToString();
emp.LastName = controllerContext.RequestContext.HttpContext.Request["LName"].ToString();
emp.Salary = int.Parse(controllerContext.RequestContext.HttpContext.Request["Salary"].ToString());
return emp;
}
}
}
03. Action的特性:
[NonAction]表示将该Action作为方法使用;
[ChildActionOnly]表示它只能在前台View中通过Html.Action或Html.RenderAction来使用,不能通过在地址栏输入地址直接访问;
[ActionName]表示为某个Action重新指定一个新的名字来使用,如下所示,必须使用新名称来进行调用,即:@Url.Action("GetActionNameByNewName", "Patient")'。
/// <summary>
/// Testing for ActionName
/// </summary>
/// <returns></returns>
[ActionName("GetActionNameByNewName")]
public ActionResult GetActionNameByOldName()
{
return xxx;
}
04. Razor代码带花括号和没有花括号的区别:
@符号后没有花括号只是简单的显示变量或表达式的值,如:
<li><a href=@Menu.URL>@Menu.DisplayName</a></li>;
@符号后有花括号则表明是对服务器代码的执行,如:
@{
var ParentMenu = Model.Where(x => x.ParentId == 0);
}
05. 认证属性:[Authorize]
为了确保每个Action方法在执行前都通过当前系统的登录验证,则需要在每个要验证Action的方法前加上[Authorize];
06. FormsAuthentication.SetAuthCookie(string userName,bool createPersistentCookie)
作用:将当前已通过验证的用户的登录名加密后放入Cookie中;
参数分析:
userName :The name of an authenticated user. This does not have to map to a Windows account.
译:已通过验证的用户的登录名,和Windows账户没有强制的对应关系;
createPersistentCookie :true to create a persistent cookie (one that is saved across browser sessions); otherwise, false.
译:是否要对Cookie进行永久保存?
07. MVC过滤器:
可以参考一下对过滤器的详细介绍:示例
08. @model与@Model的区别:

09. Partial定义方法并调用:
<ul class="dropdown-menu">
@GenerateMenuList(item.Id)
</ul> @helper GenerateMenuList(int id)
{
var subMenu = Model.RoleFunction.Where(x => x.ParentId == id).OrderBy(x => x.Ordering);
foreach (NCGH.UI.Common.ViewModels.RoleFunctionViewModel item in subMenu)
{
var subChildCount = Model.RoleFunction.Where(x => x.ParentId == item.Id).Count();
if (subChildCount == )
{
<li>@Html.ActionLink(item.DisplayName, "List", item.URL, IsAreaProject ? null : new { area = item.ParentId }, null)</li>
} if (subChildCount > )
{
<li class="dropdown-submenu">
<a tabindex="-1" href="#">@item.DisplayName</a>
<ul class="dropdown-menu">
@GenerateMenuList(item.Id)
</ul>
</li>
}
}
}
10. 常见接口:
HttpContext:获取客户端向服务端请求的相关信息,对Request/Response/Server/Session等进行了封装;
总结: A. ViewBag实质还是在内部调用ViewData;
B. ViewModel是用于Model与View之间进行数据传递的;
C. RouteTable:存储URL;
MVC 5学习总结笔记1的更多相关文章
- ASP.NET Core MVC 网站学习笔记
ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- ASP.NET MVC 5 学习教程:快速入门
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
- DSP28377S - ADC学习编程笔记
DSP28377S - ADC学习编程笔记 彭会锋 2016-08-04 20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...
- 学习ReactNative笔记整理一___JavaScript基础
学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...
- 深度学习word2vec笔记之算法篇
深度学习word2vec笔记之算法篇 声明: 本文转自推酷中的一篇博文http://www.tuicool.com/articles/fmuyamf,若有错误望海涵 前言 在看word2vec的资料 ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...
- ASP.NET MVC 5 学习教程:添加验证
原文 ASP.NET MVC 5 学习教程:添加验证 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...
随机推荐
- 《CSS设计指南》阅读笔记
一.HTML实体 HTML实体常用于生成那些键盘上没有的印刷字符.以一个和号(&)开头,一个分号(:)结尾,二者之间是表示实体的字符串. 如:“左引号(") ”右引号(&qu ...
- 使用Qt报错error while building deploying project
方法一:点击左侧的“项目”栏,看“构建目录”栏的路径,一定要注意,在路径中一定不要出现汉字,否则一定会报“error while building deploying project”的错误. 方法二 ...
- pat L1-006. 连续因子
L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...
- zepto学习之路--核心函数$()的实现
$()可以说是jquery的精华了,为dom操作带来了极大的灵活和方便.zepto号称“移动版的jquery”,那么它是怎么来实现这个核心函数呢?我们来详细探讨下. 1.首先,我们看下zepto中它是 ...
- Android Studio的使用(十二)怎样打包项目
1.在导航栏的Build下面找到Generate Signed APK...,进入该菜单栏即可. 2.生成Key Store安全钥匙和证书的管理工具. 3.如果已经有了Key Store证书,则可以直 ...
- 遍历Map key-value的两种方法
以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,然后根据key,依次从Map中去数据,基本方式如下: Map<String,String> testData ...
- 升级版本后报这个异常 : org.springframework.beans.factory.NoUniqueBeanDefinitionException
今天写代码时出现上面这个异常,很是奇怪.从网上下载了个Spring源码包,通过追踪源码发现并没有到加载工程代码中去.于是分析和Spring包有关系. 查看依赖库发现有两个版本的Spring.通过分析去 ...
- .NET反射应用
.Net中,在编写框架时,反射是最长用的一个知识点,在这举个小例子,旨在说明反射如何应用:本文只程序中只涉及到System.Type的应用,通过这个类可以访问关于任何数据类型的信息,注释部分涉及到Sy ...
- 快速搭建本地HTTP服务器
我们都知道,可以通过浏览器直接打开HTML文件来查看可视化的效果,但这种方式有一些局限性.比如我们在做手机端适配的时候,无法直接查看手机端的效果等.为了不受此类限制,强烈建议搭建一个本地的HTTP服务 ...
- C#使用FFmpeg 将视频格式转换成Gif图片示例
根据EFmpeg封装的视频转换gif工具:https://my.oschina.net/tianma3798/blog/825317 一.本次使用参数说明 /* * 参数说明: * -i 源文件位置 ...