使用HtmlHelper.ValidationMessageFor生成提示文字
public class UserLogin { [Required(ErrorMessage = "用户名不能为空")] [StringLength(10,ErrorMessage = "用户名长度不能超过10位")] public string UserName { get; set; } //[Required(ErrorMessage = "密码不能为空")] [StringLength(6,ErrorMessage = "密码长度不能超过6位")] public string Password { get; set; } } public class FormController : Controller { public IActionResult Index() { return View(new UserLogin()); } public IActionResult PostData(UserLogin login) { return Content(ModelState.IsValid?"数据有效":"数据无效"); } } @model Lesson2.Models.UserLogin @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta content="width=device-width" /> <title>Index</title> <script src="http://www.likecs.com/~/lib/jquery/dist/jquery.min.js"></script> <script src="http://www.likecs.com/~/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="http://www.likecs.com/~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script> </head> <body> <form asp-action="PostData" method="post"> <table> <tr> <td>用户名</td> <td>@Html.TextBoxFor(m => m.UserName)</td> <td>@Html.ValidationMessageFor(m => m.UserName)</td> </tr> <tr> <td>密码</td> <td>@Html.PasswordFor(m => m.Password)</td> <td>@Html.ValidationMessageFor(m => m.Password)</td> </tr> <tr> <td></td> <td><input type="submit" value="登录" /></td> <td></td> </tr> </table> </form> </body> </html> 第五课 路由规则路由
定义用户请求与控制器方法之前的映射关系
路由配置
IRouteBuilder
通过MapRoute方法配置路由模板
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute( name: "admin_default", template: "admin/{controller=Home}/{action=Index}/{id?}"); });RouteAttribute
应用在控制器及方法上
通过Template属性配置路由模板
[Route("admin/form")] public class FormController : Controller { [Route("index")] public IActionResult Index() { return View(new UserLogin()); } public IActionResult PostData(UserLogin login) { return Content(ModelState.IsValid?"数据有效":"数据无效"); } }路由约束
对路由数据进行约束
只有约束满足条件才能匹配成功
约束 示例 说明required "Product/{ProductName:required}" 参数必选
alpha "Product/{ProductName:alpha}" 匹配字母,大小写不限
int "Product/{ProductId:int}" 匹配int类型
··· ··· ···
composite "Product/{ProductId:composite}" 匹配composite类型
length "Product/{ProductName:length(5)}" 长度必须是5个字符
length "Product/{ProductName:length(5)}" 长度在5-10之间
maxlength "Product/{ProductId:maxlength(10)}" 最大长度为10
minlength "Product/{ProductId:minlength(3)}" 最小长度为3
min "Product/{ProductId:min(3)}" 大于等于3
max "Product/{ProductId:max(10)}" 小于等于10
range "Product/{ProductId:range(5,10)}" 对应的数组在5-10之间
regex "Product/{ProductId:regex(^\d{4}$)}" 符合指定的正则表达式
路由数据
路由数据也是请求数据的一部分
路由数据与表单数据一样,也可以绑定到参数上