爱上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 == 0)
                return null;
            IList<string> errList = new List<string>();
            modelState[fieldName].Errors.ToList().ForEach(i =>
            {
                errList.Add(i.ErrorMessage);
            });
            return MvcHtmlString.Create(string.Join(",", errList));

        }
    }
}

现在输出的错误消息就是纯文字,如图

 本文转自博客园张占岭(仓储大叔)的博客,原文链接:爱上MVC~MVC4模型验证可以放在前端,如需转载请自行联系原博主。

目录
相关文章
|
2月前
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
35 2
|
1月前
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
62 0
理解最常用的MVC分层模型及其变种
|
1月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
2月前
|
人工智能 前端开发 算法
参加完全球开发者大会之后,我一个小前端尝试使用了一些AI模型
参加完全球开发者大会之后,我一个小前端尝试使用了一些AI模型
|
2月前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
44 0
|
2月前
|
人工智能 自然语言处理 前端开发
前端训练不规范导致AIGC模型“上梁不正”
【1月更文挑战第23天】前端训练不规范导致AIGC模型“上梁不正”
60 1
前端训练不规范导致AIGC模型“上梁不正”
|
2月前
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
33 0
|
2月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
2月前
|
开发框架 前端开发 机器人
从模型到前端,你应该知道的LLM生态系统指南
LLM在在2023年发展的风生水起,一个围绕LLM的庞大生态系统正在形成,本文通过介绍这个生态系统的核心组成部分,来详细整理LLM的发展。
297 2
|
2月前
|
前端开发 JavaScript Java
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
330 1