跟小静学MVC3[02]--从注册模块实战MVC新特性
2012-10-10 12:18
393 查看
上一节我们创建了自己的第一个MVC3项目,并了解了Controller和View的添加方法。今天我们将仿照大米返利网注册模块写个小例子,来进一步了解Model、Action、Form等相关内容。
【情景假设】
首页--欢迎页面,简单介绍大米返利网,并提供注册链接;
注册--用户使用网站之前要先注册为会员,注册页面还要对用户填写的信息进行有效性验证;
Model Validation Codeusing System.ComponentModel.DataAnnotations;
namespace DamifanliMvc3.Models
{
/// <summary>
/// 注册用户实体
/// </summary>
public class UserInfo
{
/// <summary>
/// 自动编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Required(ErrorMessage = "请输入用户名")]
[RegularExpression("^[a-zA-Z][a-zA-Z0-9]{2,14}$", ErrorMessage = "请输入3-15位字母或数字")]
public string UserName { get; set; }
/// <summary>
/// 密码(明文简单示例)
/// </summary>
[Required(ErrorMessage = "请输入密码")]
public string Password { get; set; }
/// <summary>
/// qq号码
/// </summary>
[Required(ErrorMessage = "请输入QQ号码")]
[RegularExpression("[1-9][0-9]{4,}",ErrorMessage = "请输入正确的qq号码")]
public string QQ { get; set; }
/// <summary>
/// 邮箱地址
/// </summary>
[Required(ErrorMessage = "请输入邮箱地址")]
[RegularExpression(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",ErrorMessage = "请输入正确的邮箱地址")]
public string Email { get; set; }
}
}2.ModelState.IsValid
我们可以在Controller中使用ModelState.IsValid来检验是否存在验证问题。
public ActionResult Register(UserInfo userInfo)
{
if(ModelState.IsValid)
{
return View("Complete", userInfo); //Complete Action后续创建
}
return View();
} 3.错误提示
当用户输入不符合规则时,我们可以在view中使用Html.ValidationSummary()来提示用户。
@using(Html.BeginForm())
{
@Html.ValidationSummary()
<p>用户名:@Html.TextBoxFor(m=>m.UserName)</p>
……
}该方法会在页面中放置一系列隐藏的li,MVC可以令这些位置可见并显示model验证属性中定义的错误信息,如下图所示。点击注册按钮时该页面不会进行跳转,直到所有输入都符合规范为止。值得庆幸的是,提交失败时之前填写的数据仍然会保留在页面中。
查看页面源代码:
<p>
用户名:<input class="input-validation-error" data-val="true" data-val-regex="请输入3-15位字母或数字" data-val-regex-pattern="^[a-zA-Z][a-zA-Z0-9]{2,14}$" data-val-required="请输入用户名" id="UserName" name="UserName" type="text" value="" />
</p>
在前面的post提交的Register中,我们已经给出了注册完成时要跳转的目标”Complete”,并且传递了变量userInfo,接下来我们添加一个强类型UserInfo类型的View。
修改代码如下:
@model DamifanliMvc3.Models.UserInfo
@{
ViewBag.Title = "注册完成";
}
<h2>注册完成</h2>
<p>
恭喜,您已注册成功,请妥善保管注册信息:<br/>
账号:@Model.UserName<br/>
QQ:@Model.QQ<br/>
Email:@Model.Email<br/>
大米返利网祝您购物愉快!
</p>
2. 发送邮件通知
在展示Complete View的同时,我们使用WebMail类来发送通知邮件。
@{
try
{
WebMail.SmtpServer = "smtp.sina.com";
WebMail.SmtpPort = 587;
WebMail.EnableSsl = true;
WebMail.UserName = "CathyChen";
WebMail.Password = "damifanli";
WebMail.From = "cathychen@sina.com";
WebMail.Send(@Model.Email,"成功注册大米返利网",@Model.UserName+",您已成功注册大米返利网,祝您购物愉快!");
}
catch
{
@:抱歉,通知邮件发送失败!
}
}小结:
到这里,今天的学习基本结束了。当然了这只是一个简单的示例,实际使用中还有很多可以改进的地方,比如将发送邮件功能放在单独的模块中调用而不是将代码块嵌在View中,以便重复使用;另外,这里的错误处理使用的try…catch,其实可以跳转到单独的错误页面。
【情景假设】
首页--欢迎页面,简单介绍大米返利网,并提供注册链接;
注册--用户使用网站之前要先注册为会员,注册页面还要对用户填写的信息进行有效性验证;
Model Validation Codeusing System.ComponentModel.DataAnnotations;
namespace DamifanliMvc3.Models
{
/// <summary>
/// 注册用户实体
/// </summary>
public class UserInfo
{
/// <summary>
/// 自动编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Required(ErrorMessage = "请输入用户名")]
[RegularExpression("^[a-zA-Z][a-zA-Z0-9]{2,14}$", ErrorMessage = "请输入3-15位字母或数字")]
public string UserName { get; set; }
/// <summary>
/// 密码(明文简单示例)
/// </summary>
[Required(ErrorMessage = "请输入密码")]
public string Password { get; set; }
/// <summary>
/// qq号码
/// </summary>
[Required(ErrorMessage = "请输入QQ号码")]
[RegularExpression("[1-9][0-9]{4,}",ErrorMessage = "请输入正确的qq号码")]
public string QQ { get; set; }
/// <summary>
/// 邮箱地址
/// </summary>
[Required(ErrorMessage = "请输入邮箱地址")]
[RegularExpression(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",ErrorMessage = "请输入正确的邮箱地址")]
public string Email { get; set; }
}
}2.ModelState.IsValid
我们可以在Controller中使用ModelState.IsValid来检验是否存在验证问题。
public ActionResult Register(UserInfo userInfo)
{
if(ModelState.IsValid)
{
return View("Complete", userInfo); //Complete Action后续创建
}
return View();
} 3.错误提示
当用户输入不符合规则时,我们可以在view中使用Html.ValidationSummary()来提示用户。
@using(Html.BeginForm())
{
@Html.ValidationSummary()
<p>用户名:@Html.TextBoxFor(m=>m.UserName)</p>
……
}该方法会在页面中放置一系列隐藏的li,MVC可以令这些位置可见并显示model验证属性中定义的错误信息,如下图所示。点击注册按钮时该页面不会进行跳转,直到所有输入都符合规范为止。值得庆幸的是,提交失败时之前填写的数据仍然会保留在页面中。
查看页面源代码:
<p>
用户名:<input class="input-validation-error" data-val="true" data-val-regex="请输入3-15位字母或数字" data-val-regex-pattern="^[a-zA-Z][a-zA-Z0-9]{2,14}$" data-val-required="请输入用户名" id="UserName" name="UserName" type="text" value="" />
</p>
六、注册完成页面
1.添加Complete View:在前面的post提交的Register中,我们已经给出了注册完成时要跳转的目标”Complete”,并且传递了变量userInfo,接下来我们添加一个强类型UserInfo类型的View。
修改代码如下:
@model DamifanliMvc3.Models.UserInfo
@{
ViewBag.Title = "注册完成";
}
<h2>注册完成</h2>
<p>
恭喜,您已注册成功,请妥善保管注册信息:<br/>
账号:@Model.UserName<br/>
QQ:@Model.QQ<br/>
Email:@Model.Email<br/>
大米返利网祝您购物愉快!
</p>
2. 发送邮件通知
在展示Complete View的同时,我们使用WebMail类来发送通知邮件。
@{
try
{
WebMail.SmtpServer = "smtp.sina.com";
WebMail.SmtpPort = 587;
WebMail.EnableSsl = true;
WebMail.UserName = "CathyChen";
WebMail.Password = "damifanli";
WebMail.From = "cathychen@sina.com";
WebMail.Send(@Model.Email,"成功注册大米返利网",@Model.UserName+",您已成功注册大米返利网,祝您购物愉快!");
}
catch
{
@:抱歉,通知邮件发送失败!
}
}小结:
到这里,今天的学习基本结束了。当然了这只是一个简单的示例,实际使用中还有很多可以改进的地方,比如将发送邮件功能放在单独的模块中调用而不是将代码块嵌在View中,以便重复使用;另外,这里的错误处理使用的try…catch,其实可以跳转到单独的错误页面。
相关文章推荐
- 从注册模块实战MVC新特性
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
- WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程
- 无废话MVC入门教程九[实战一:用户注册与登陆]
- WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程
- WF4.0实战(十二):ASP.NET MVC2.0结合WF4.0实现用户多步注册流程
- 跟小静学MVC3相关语法特性小补习
- 跟小静学MVC3[03]--相关语法特性小补习
- 06.HTTP编程实战:高校信息查询平台之注册模块
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
- MVC学习笔记--跟小静学MVC相关语法特性小补习
- [Java.web]MVC 案例-开发用户模块(注册)
- Android实战简易教程-第二十三枪(基于Baas的用户注册和登录模块实现!)
- 高通8909模块之SPI特性
- react项目实战(权限模块开发一) 配置路由
- ES6新特性之解构、参数、模块和记号用法示例
- Spring boot+Shiro+ spring MVC+swagger UI +Mybatis+mysql+Vue +Element UI 之三 vue简单页面实战
- 注册模块设计
- Android技巧2:登录注册模块解决方案
- Linux应用环境实战02:打造属于自己的Vim