asp.net mvc 模型验证注解,表单提交
一、添加模型
public class Account
{
public int ID { get; set; } [Display(Name = "姓名")] //设置要显示的字段名
[Required(ErrorMessage = "您需要填写{0}")] //设置为必须字段 已经错误提示
[StringLength(, MinimumLength = )] //设置最大长度和最小长度
public string Name { get; set; } [Display(Name = "年龄")]
[Range(, , ErrorMessage = "年龄填写不正确!")] //设置 值范围
public int Age { get; set; } [Display(Name = "身高")]
[Range(typeof(decimal), "50.00", "250.00", ErrorMessage = "身高超出指定范围")]
public decimal Height { get; set; } [Display(Name = "生日")]
[DataType(DataType.Date, ErrorMessage = "{0}格式不正确")] //设置数据类型以及错误提示
public DateTime Birthday { get; set; } [Display(Name = "电话")]
[Remote("CheckPhone", "Account", ErrorMessage = "{0}已被注册")] //在指定的Conteroller中的通道(route)中验证数据
public string Phone { get; set; } [Display(Name = "地址")]
[DataType(DataType.MultilineText)]
public string Address { get; set; } [Display(Name = "电子邮箱")]
[RegularExpression(@"(\w)+(\.\w+)*@(\w)+((\.\w+)+)", ErrorMessage = "{0}格式不正确")] //正则验证
public string Email { get; set; } [Display(Name = "再次输入电子邮箱")]
[Compare("Email", ErrorMessage = "{0}两次输入不一致")] //设置比较两个字段的值
public string EmailConfirm { get; set; } [Display(Name = "密码")]
[DataType(DataType.Password)]
public string Password { get; set; } [Display(Name = "备用电子邮箱")]
[DataType(DataType.EmailAddress, ErrorMessage = "{0}格式不正确")]
public string email_B { get; set; }
}
Models
二、添加控制器
public class AccountController : Controller
{
//
// GET: /Account/ public ActionResult Register()
{
return View();
} [HttpPost]//主意表单提交默认post,要加上HttpPost特性
public ActionResult Register(Account model)
{
if (ModelState.IsValid)//模型验证注解验证是否成功
{
//执行其他验证...如果验证不通过则向模型验证添加错误信息:ModelState.AddModelError("key", "错误信息"); //如果其他验证成功则调用业务逻辑... //执行成功则跳转页面
return RedirectToActionPermanent("Index", "Home");
}
return View(model);
} //Remote验证
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)] //清除缓存
public JsonResult CheckPhone(string Phone)
{
bool flag = true;//检测phone的方法调用
if (flag)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
} }
Controller
三、添加视图
@model MvcApplication2.Models.Account
@{
ViewBag.Title = "Register";
}
<h2>Register</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Account</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Height)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Height)
@Html.ValidationMessageFor(model => model.Height)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Birthday)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Birthday)
@Html.ValidationMessageFor(model => model.Birthday)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Phone)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Phone)
@Html.ValidationMessageFor(model => model.Phone)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Address)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.Address)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EmailConfirm)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmailConfirm)
@Html.ValidationMessageFor(model => model.EmailConfirm)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.email_B)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.email_B)
@Html.ValidationMessageFor(model => model.email_B)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
主意,该视图是使用mvc模板创建,也可以手动编写
asp.net mvc 模型验证注解,表单提交的更多相关文章
- ASP.NET MVC - 模型验证
ASP.NET MVC - 模型验证(Model verification) 模型验证原理浅析 模型验证用到了模型绑定器.模型验证器(System.Web.Mvc.DataAnnotationsMod ...
- asp.net mvc 模型验证组件——FluentValidation
asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...
- ASP.NET没有魔法——ASP.NET MVC 模型验证
在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Frame ...
- Jqueruy验证 form表单提交之前的中的数据
//---表单提交---- $("#destiation_form").submit(function(){ var from_city_value=$("#from_c ...
- Asp.Net MVC 模型验证详解-实现客户端、服务端双重验证
概要 在asp.net webform开发中经常会对用户提交输入的信息进行校验,一般为了安全起见大家都会在客户端进行Javascript(利于交互).服务端双重校验(安全).书写校验代码是一个繁琐的过 ...
- 当ASP.NET MVC模型验证遇上CKEditor
项目需要,使用到了CKEditor编辑器.这是个很不错的富文本编辑器,但是当它绑定的字段需要进行模型验证的时候,却会出现验证失效的问题.因此本文旨在记录这个问题和给出解决办法.以下以Validatio ...
- asp.net mvc 模型验证-最舒服的验证方式
在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法 1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法 ...
- aspx中的表单验证 jquery.validate.js 的使用 以及 jquery.validate相关扩展验证(Jquery表单提交验证插件)
这一期我们先讲在aspx中使用 jquery.validate插件进行表单的验证, 关于MVC中使用 validate我们在下一期中再讲 上面是效果,下面来说使用步骤 jQuery.Valid ...
- ASP.NET MVC 4 (十三) 基于表单的身份验证
在前面的章节中我们知道可以在MVC应用程序中使用[Authorize]特性来限制用户对某些网址(控制器/控制器方法)的访问,但这都是在对用户认证之后,而用户的认证则依然是使用ASP.NET平台的认证机 ...
随机推荐
- ucos中的三种临界区管理机制
熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界区管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(). 同样 ...
- Linux C相关基础
系统求助 man 函数名 man 2 函数名 - 表示函数是系统调用函数 man 3 函数名 - 表示函数是C的库函数 eg:man fread man 2 w ...
- 回调函数及数组中sort()方法实现排序的原理
1.回调函数:把一个方法A当一个参数值传递到另外一个函数B中,在B执行的过程当中我们随时根据需求让A方法执行: 什么是回调 :它是异步编程基本的方法,需要异步处理的时候一般采用后续传递的方式,将后 ...
- js加密解密
<script> document.write("<xmp>"); document.write(function(p,a,c,k,e,r){}(''.sp ...
- 在重新生成解决方案时,出现的错误:无法将文件“obj\x86\Debug\*.exe”复制到“obj\Debug\*.exe”。文件正由另一进程使用,因此该进程无法访问此文件
此例是VS2010的CS项目. 在重新生成解决方案时,出现的错误. 解决步骤:先关闭解决方案,再在项目文件下的bin\Debug\*.exe删除这类之前生成得.exe文件,再在VS2010下重新生成.
- 7 -- Spring的基本用法 -- 6...
7.6 Spring 3.0 提供的Java配置管理 Spring 允许使用Java类进行配置管理,可以不使用XML来管理Bean,以及Bean之间的依赖关系. Interface :Person p ...
- 如何去掉HTML5Viewer中的滚动条
在页面中加载报表时,当报表纸张的高度和宽度大于浏览器的高度和宽度时,就会自动生成滚动条,以便报表加载完全,但很多时候报表浏览器滚动条的出现,可能会导致一个页面有多个滚动条的重叠出现,用户体验非常不好, ...
- iptables 端口转发
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
- [转]CSS hack大全&详解
转自:CSS hack大全&详解 1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的, ...
- 根据UUID和MD5, 生成可以用作Token的字符串
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util. ...