爱上MVC~MVC4模型验证可以放在前端
MVC4.0推出后,在模型验证上有了一个新的改近,它支持前端验证,即在用户POST之前,如果验证失败,则Action(POST方式的)不会被执行,而直接停留在原视图,这对于用户体验是好的,它就类似于ajax验证一样,不会将原页重定向。
MVC4.0在view中引用了jqueryval文件后,即可实现客户端实时验证
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
如果你不需要走JS方式验证,还是使用原来的POST方法后再进行验证的话,把上面那行删除即可,当然,MVC为我们提供的验证展示可能不是我们想要的,它往往会将“验证失败的提示信息”添加一个<span>然后为它加class,这可能并不是我们想要的,因为我们
的“错误提示”往往由前端开发人员提供的,所以,我们最需要的是“纯文字”的错误提示,现在,我把MVC的ValidationMessageFor扩展方法进行了新的扩展,我叫它ValidationMessageTextFor,它会将模型里的某个字段的验证错误的消息进行“纯文字”的输出,不
会有任何HTML标记,这才是我们所需要的,它也有不足,那就是目前并不支持前端实时模型验证!
ValidationMessageTextFor原代码如下,供大家学习与研究:
namespace System.Web.Mvc.Html
{
/// <summary>
/// MVC中对HtmlHelper扩展方法
/// </summary>
public static class MvcHtmlExtensions
{
/// <summary>
/// 从ModelState中返回指定键对应的验证的错误消息
/// </summary>
/// <typeparam name="TModel"></typeparam>
/// <typeparam name="TProperty"></typeparam>
/// <param name="htmlHelper"></param>
/// <param name="expression"></param>
/// <returns></returns>
public static MvcHtmlString ValidationMessageTextFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{ var fieldName = ExpressionHelper.GetExpressionText(expression); var modelState = htmlHelper.ViewData.ModelState;
if (!modelState.Keys.Contains(fieldName))
return null;
if (modelState[fieldName].Errors.Count == )
return null;
IList<string> errList = new List<string>();
modelState[fieldName].Errors.ToList().ForEach(i =>
{
errList.Add(i.ErrorMessage);
});
return MvcHtmlString.Create(string.Join(",", errList)); }
}
}
现在输出的错误消息就是纯文字,如图
aaarticlea/png;base64,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" alt="" />
爱上MVC~MVC4模型验证可以放在前端的更多相关文章
- .Net高级进阶,WebApi和MVC进行模型验证的时候,教你如何自由控制需要进行验证的字段?
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...
- MVC3升级到MVC4模型验证信息显示为英文问题及解决方案
最近把项目从mvc3升级到mvc4,部署到服务器上出现了一个小问题,就是在表单里字段验证时,验证显示信息为英文,如下: The field 平均租金 must be a number 而在本地是好的, ...
- ASP.NET MVC 自动模型验证
经常看到这个代码 在controller 中写入验证模型,每个需要验证的action 都写-.. ,就问你烦不烦~ 可以利用 ASP.NET MVC 的 action 拦截机制 自动处理. 1 新建验 ...
- ASP.NET没有魔法——ASP.NET MVC 模型验证
在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Frame ...
- 模型验证组件 FluentValidation
FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...
- FluentValidation 模型验证
FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...
- 双重保险——前端bootstrapValidator验证+后台MVC模型验证
我们在前端使用BoostrapValidator插件验证最基本的格式要求问题,同时在后台中,使用MVC特有的模型验证来做双重保险.对于boostrapValidator我就不说了,具体请看<bo ...
- ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证
原文:Model Validation 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 在这篇文章中: 章节: 介绍模型验证 验证 Attribute 模型状态 处理 ...
- MVC遇上bootstrap后的ajax表单模型验证
MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...
随机推荐
- 简单jquery实现select三级联动
简单的jquery实现select三级联动 代码如下: <!DOCTYPE html> <html> <head> <meta charset="u ...
- 猿团YTFCloud生态系统,全面服务创业者
9月15日,YTFCloud已正式开启了内测. 创业者翘首以待的YTFCloud,虽然让部分创业者感受到了它的神奇,但对于更多暂时无法尝试的创业者来说,它依然有一层神秘的面纱. 今天小编就来带你近距离 ...
- 字符串流stringstream(头文件sstream)
今天看到一样很有趣的东西,可以用于各种类型的转换.其实一个文本可以看作一个长长的字符串,整数啊浮点数的都是字符串,于是在字符串流里面就可以很方便地玩转各种类型,比如说: #include<ios ...
- Linux内核分析之扒开系统调用的三层皮(下)
一.实验内容 1. 通过内核的方式使用系统调用 需要使用的命令 rm menu -rf //强制删除当前menugit clone http://github.com/mengning/menu.gi ...
- C#中调用python方法
最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法. 1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codepl ...
- iOS开发 swift3.0中文版
swift3.0中文版: http://pan.baidu.com/s/1nuHqrBb
- 第七章 内存管理单元MMU介绍
7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...
- vertica在电信的应用
本文介绍了什么 ´ 电信级大数据分析典型需求 ´ Vertica数据库特点及与其他数据库对比 ´ Vertica核心技术介绍 ´ 基于Vertica的典型分系统架构简介 电信级大数据分析典型需求 ´ ...
- 去掉tableview cell的左边间隙问题
http://www.jianshu.com/p/ba32f45222e0 简书上面的一篇文章.
- 重绘控件中OnPaint、OnDraw、OnDrawItem和DrawItem的区别
==================================================================================================== ...