您的位置:首页 > 其它

跟小静学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>

六、注册完成页面

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,其实可以跳转到单独的错误页面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: