全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

MVC数据验证详解

一、一般情况

对于使用过MVC框架的人来说,对MVC的数据验证不会陌生,比如,我有一个Model如下:

public class UserInfo
  {
    [Required(ErrorMessage = "UserName不可为空1111")]
    public string UserName { get; set; }
    public string Sex { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
  }

前端:

@using (Html.BeginForm()) 
{
  @Html.AntiForgeryToken()
  <div class="form-horizontal">
    <h4>UserInfo</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
      @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Sex, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Sex, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Sex, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Mobile, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Mobile, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" })
      <div class="col-md-10">
        @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
      </div>
    </div>
    <div class="form-group">
      <div class="col-md-offset-2 col-md-10">
        <input type="submit" value="Create" class="btn btn-default" />
      </div>
    </div>
  </div>
}

效果:

 

是的,MVC可以通过对一些属性添加一定的特性来对数据进行验证。这对大家来说可能并不陌生。

如果仅仅是这样就完事了,那么也就没事么意思了。

二、常用情况

在实际的开发中,我们大都是通过EF,或者其他方式,使得数据库中的每一个表或视图,都在代码中对应的一个类模型,对于通过数据库生成的模型,我们不宜修改,退一步讲,即使我们在这个类中对一些属性增加一些数据验证的特性,那么,数据库发生变化后,如果我再重新生成这些Model,我们之前添加好的验证特性将没有了,那么,我们如何解决这样的问题呢?

假如:

public class UserInfo
  {  
    public string UserName { get; set; }
    public string Sex { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
  }

UserInfo是通过数据库生成的一个模型,对于数据库生成的模型,我们不宜修改。但那是,我们又需要对这个模型中的某些属性进行数据验证,比如需要对UserName属性进行非空验证,那么我们如何做呢?

大家通常会想到部分类,是的,我们可以通过部分类来解决上述问题。

首先,我们将模型中的类加上关键字 partial ,然后我们再写一个这个模型的部分类。

public partial class UserInfo
  {
    [Required(ErrorMessage = "UserName不可为空1111")]
    public string UserName { get; set; }
  }

但是,这样会提示我们一个错误,就是类中存在重复的属性,是的,部分类中,属性是不可以重名的。那么,我们该怎么办呢,MVC框架已经给了我们解决方案了。

我们可以这么写:

[MetadataType(typeof(MeteUserInfo))]
  public partial class UserInfo
  {
    private class MeteUserInfo
    {
      [Required(ErrorMessage = "UserName不可为空1111")]
      public string UserName { get; set; }
    }
  }

这样,我们上述的问题就迎刃而解了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# MVC  # 数据验证  # SpringMVC使用@Valid注解进行数据验证的方法  # 详解SpringMVC学习系列(6) 之 数据验证  # ASP.NET MVC 数据验证及相关内容  # 为空  # 类中  # 我们可以  # 的人  # 都是  # 在这个  # 都在  # 那是  # 也就  # 是这样  # 不可以  # 可以通过  # 给了  # 迎刃而解  # 这对  # 我再  # 要对  # 如需  # 或者其他  # 如何解决 


相关文章: 建站之星如何快速生成多端适配网站?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何快速搭建高效可靠的建站解决方案?  如何访问已购建站主机并解决登录问题?  如何基于云服务器快速搭建个人网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何在服务器上配置二级域名建站?  历史网站制作软件,华为如何找回被删除的网站?  如何用搬瓦工VPS快速搭建个人网站?  如何打造高效商业网站?建站目的决定转化率  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何快速搭建高效简练网站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何用腾讯建站主机快速创建免费网站?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星收费标准详解:套餐费用及年费价格表一览  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  如何用IIS7快速搭建并优化网站站点?  如何用PHP工具快速搭建高效网站?  *服务器网站为何频现安全漏洞?  家具网站制作软件,家具厂怎么跑业务?  如何在西部数码注册域名并快速搭建网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站主机是否等同于虚拟主机?  制作农业网站的软件,比较好的农业网站推荐一下?  网站制作的步骤包括,正确网址格式怎么写?  山东云建站价格为何差异显著?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  建站为何优先选择香港服务器?  建站之星后台管理如何实现高效配置?  如何选择可靠的免备案建站服务器?  c# 在ASP.NET Core中管理和取消后台任务  ,sp开头的版面叫什么?  建站主机解析:虚拟主机配置与服务器选择指南  如何通过建站之星自助学习解决操作问题?  建站之星3.0如何解决常见操作问题?  如何选择香港主机高效搭建外贸独立站?  建站主机默认首页配置指南:核心功能与访问路径优化  制作网站的模板软件,网站怎么建设?  ,如何利用word制作宣传手册?  如何在阿里云香港服务器快速搭建网站?  建站之星后台管理系统如何操作?  微课制作网站有哪些,微课网怎么进?  如何基于PHP生成高效IDC网络公司建站源码?  如何通过虚拟机搭建网站?详细步骤解析  SQL查询语句优化的实用方法总结  阿里云网站搭建费用解析:服务器价格与建站成本优化指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。