原文地址:http://www.jb51.net/article/56713.htm

一、数据验证

数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验证相关的Html辅助方法在服务器端判断是否通过服务器端验证常用的验证标记                    

Required:非空验证StringLength:验证字符串的长度RegularExpression:正则表达式验证Compare:比较两个字段的值是否相等Range:范围验证Remote:服务器验证(需要在controller中编写返回值为JsonResult的Action)自定义验证标记与验证相关的js文件

在ASP.NET MVC中提供了2套验证框架,分别是微软验证框架和jquery验证框架.默认启用了jquery验证框架.

注意:这些js文件的顺序不能颠倒;其中Site.css文件中定义了数据验证使用的样式.

                      

验证相关的Html辅助方法

注意:1.必须使用Html.ValidationMessage()和Html.ValidationMessageFor()来显示验证失效的提示信息;

2.被验证的控件(如文本框\下拉列表框等)必须使用Html辅助方法生成才有效.

                      

在服务器端判断模型是否通过了验证(服务器端验证)

页面中如果使用了MVC验证功能,那么在后台对应的Action中必须通过ModelState.IsValid判断是否通过了服务器端验证。只有通过了服务器端验证,才能执行其他的业务逻辑代码

                      

使用要点:

被验证的标记不能是纯html,必须使用相应的html辅助方法

例如:Html.TextBoxFor(model=>model.UserName),则验证有效;

<input type=”text” id=”UserName” name=”UserName” />,则验证无效;

必须使用相应的html辅助方法显示验证消息(Html.ValidationMessage)被验证的控件必须放在有html.beginform的辅助方法内部(不能是纯<form>标记).客户端验证是不安全的,容易被禁用或欺骗,所以一定要在服务器端判断ModelState.IsValid是否为true.

Action与View的数据传递

在某些情况下,视图需要显示多份数据(比如被修改的员工信息\岗位列表\部门列表),但是Action在返回视图时,View()方法只能传递1个object类型的数据,那么其他的数据该如何传递?

ASP.NET MVC为我们提供了3种方案:ViewData\TempData\ViewBag.

重要提示:在Controller和View中都有这三个属性,在Controller的相应属性中存放了数据后,就可以在View的相应属性中提取这些数据。

ViewData

ViewData是一个字典类型.向里面添加数据时要以键值对的形式添加.

首先在Action中向ViewData中添加,其次就可以在View中访问ViewData来提取数据.

                    

ViewBag

ViewBag是一个动态类型的属性。在ASP.NET MVC 3.0中才加入了ViewBag属性.

动态类型:dynamic,就是可以事先不为其定义属性,通过直接给属性赋值的方式就可以随时为它添加新的属性.

下面的代码演示了向ViewBag中存放cls和stu两个对象,这两个对象分别放到了属性ClassInfo和StudentInfo中。

                    

TempData

TempData的用法和ViewData很相似,都是字典类型.那他们的区别是什么?

ViewData中存储的数据仅仅对本次访问的当前action有效.而TempData中存储的数据,除了对本次访问的当前action有效外,还对本次访问的其他action有效(比如在Action1中向TempData中存放了数据,即使从Action1跳转至Action2后,仍然可以在Action2中从TempData提取数据。而ViewData和ViewBag都无法做到这一点).因此,TempData中数据的生命周期比ViewData|ViewBag中的生命周期要长.

ActionResult的实现类

在ASP.NET MVC模型中,Action用于响应用户的各种请求,比如向客户端返回html文档、html片段、json数据、纯文本、文件等结果。在ASP.NET MVC中通过在Action(行为或操作)方法中返回ActionResult类型的对象来实现向客户端响应上面的各种结果。

ActionResult类是个抽象类(抽象类无法直接被实例化).

ActionResult有很多实现类,不同的实现类用于响应客户端不同的结果。并且在Controller类中提供了大量的辅助方法,这些辅助方法可以快速的创建各种ActionResult.

在实际开发中,我们更多的是使用Controller类中的辅助方法,而非自己手工创建ActionResult的实现类。

ViewResult类

ViewResult类的作用是向客户端响应View目录中一个视图文件.

Controller类中提供了View()方法,来快速的返回一个ViewResult类对象.

ContentResult类

该类用于向客户端返回一段文本内容(纯文本\HTML...).

在Controller类中的辅助方法为:Controller.Content(string content);
                    

RedirectToRouteResult类

该类的作用是从当前action跳转至其他action.

在Controller类中的辅助方法为:RedirectToAction(“ActionName”, “ControllerName”)

RedirectResult类

在服务器端从当前Action跳转到其他URL地址.

在Controller类中的辅助方法为:Controller.Redirect(string url) 

                    

JsonResult类

该类用于向客户端返回一段Json格式的字符串.

在Controller类中的辅助方法为:Controller.Json(object data);

注意:默认情况下mvc拒绝响应以get方式发送的ajax请求,需要使用JsonRequestBehavior.AllowGet。

                    

PartialViewResult类

该类的作用是向客户端响应Views目录的一个分部视图文件。分部视图就是只包含html片段的视图文件.

在Controller类中的辅助方法为:Controller.PartialView();

                    

下图演示了在创建视图文件时,如何创建一个分部视图文件(勾选“创建为分部视图”复选框):

                    

FilePathResult类

该类用于实现文件下载.

在Controller类中的辅助方法为:Controller.File(string filePath, string contentType, string fileName);

                    

FileContentResult类

将内存中的字节数组当做文件数据直接输出到客户端。适合在内存中动态生成文件或将小文件加载到字节数组后输出。

FileStreamResult类

这个方法会先将文件全部读入到服务器内存中,进行缓冲,然后再发送到客户端。这样做会非常消耗服务器内存,因此应避免使用该方法发送大文件。

EmptyResult类

该类用于向客户端响应一个空结果。

HttpStatusCodeResult类

该类用于向客户端相应指定的状态码.

HttpNotFoundResult类就是HttpStatusCodeResult的子类,表示404这一状态码。

下面的是一些常用的http状态码:

404:资源未找到(表示客户端请求服务器的资源地址不存在)

500:服务器内部错误(以5XX开头的表示服务器端在处理过程中出现的错误)

200:成功(表示客户端发送的请求被服务器成功的处理和响应)

其他

如何在aspx页面中导入命名空间?

方式一:在指定的页面添加<%@ Import Namespace=”命名空间” %>

                   

方式二:在项目的web.config配置文件中添加pages---namespaces----add

                   

注:通过方式二添加的命名空间可以在所有的aspx页面中使用;而方式一添加的命名空间只能在当前页面中使用.

【转】ASP.NET MVC 数据验证及相关内容的更多相关文章

  1. ASP.NET MVC局部验证及相关问题

    在上一篇“asp.net mvc常用的数据注解和验证以及entity framework数据映射”话题中,有的博友提到 ‘“同一个实体在3-4个地方会发生修改,每个修改需要验证的方式都不一样,后端就不 ...

  2. asp.net mvc数据验证

    文章:asp.net mvc3 的数据验证(一) 文章:ASP.NET MVC下的四种验证编程方式 这个讲了在一个地方展示验证信息 文章:[ASP.NET MVC系列]浅谈数据注解和验证 这个在每个输 ...

  3. MVC数据验证使用小结

    原文:MVC数据验证使用小结 描述:MVC数据验证使用小结 内容:display,Required,stringLength,Remote,compare,RegularExpression 本人最近 ...

  4. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

  5. ASP.NET MVC应用程序更新相关数据

    为ASP.NET MVC应用程序更新相关数据 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

  6. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...

  7. 为ASP.NET MVC应用程序读取相关数据

    为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...

  8. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...

  9. ASP.NET MVC 2 验证

    来源:http://www.cnblogs.com/jhxk/articles/2612885.html  只为把自己觉的好的存起来 对用户输入的验证以及强制业务规则/逻辑是大多数web应用的核心需求 ...

随机推荐

  1. 错误记录--关于foreach,集合已修改;可能无法执行枚举操作

    集合已修改,可能无法执行枚举操作.今天在使用foreach遍历的时候出现了这样的错误.查了一下,这个是使用foreach的典型的错误问题问题.foreach在遍历取数据的过程中,枚举器只允许读,不允许 ...

  2. 千万数量级分页存储过程 +AspNetPager现实分页

    存储过程 USE [ForeignTradeDB] GO /****** Object: StoredProcedure [dbo].[CommonGetDataPager] Script Date: ...

  3. MVC部署出现HTTP 404 错误

    asp.net mvc部署出现问题,http错误404.0,报错如下图: 在网上找了好多方法都不行.最后我的解决方案是: 打好这个补丁就行了http://support.microsoft.com/k ...

  4. Java面向对象的概念以及OOP思想的优点

    传统面向过程程序设计的思路: 先设计一组函数用来解决一个问题,然后确定函数中需要处理的数据以及存储位置. 面向对象的设计的思路: 先确定处理的数据,然后确定处理数据的算法,最后将数据和算法封装在一起构 ...

  5. 【HAOI2007】理想的正方形

    [问题描述] 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. [输入] 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行 ...

  6. Android学习-----Button点击事件几种写法

    Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...

  7. 高效jQuery

    1.缓存变量 DOM遍历是昂贵的,所以尽量将会重用的元素缓存. // 糟糕 h = $('#element').height(); $('#element').css('height',h-20); ...

  8. weekly review

    鉴于某位昔日工作在我身边的大师一直在写review,所以为了能靠近大师,我也要开始写review了. 无名师曾经说过,想要成为大师的话,要先找到一个大师,然后追随大师,再然后与大师通行,之后成为大师, ...

  9. 转:精心挑选的12款优秀 jQuery Ajax 分页插件和教程

    在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的  ...

  10. 至芯FPGA培训中心-1天FPGA设计集训(赠送FPGA开发板)

    至芯FPGA培训中心-1天FPGA设计集训(赠送开发板) 开课时间2014年5月3日 课程介绍 FPGA设计初级培训班是针对于FPGA设计技术初学者的课程.课程不仅是对FPGA结构资源和设计流程的描述 ...