ASP.NET CORE 入门教程(附源码) (3)

使用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}$)}"   符合指定的正则表达式  

路由数据

路由数据也是请求数据的一部分

路由数据与表单数据一样,也可以绑定到参数上

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzys.html