打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Asp.Net MVC4 + Oracle + EasyUI 学习 第一章

Asp.Net MVC4 + Oracle + EasyUI  第一章

--操作数据和验证

本文链接:http://www.cnblogs.com/likeli/p/4234238.html

文章集合:http://www.cnblogs.com/likeli/category/651581.html

1、    关于HtmlHelper和UrlHelper

         因为大部分的web请求的目标都是向客户端发送HTML代码。因此,Asp.Net MVC也是为我们创建HTML提供了各种帮助。除了Razor,另外还有两个最为重要的帮助类就是HtmlHelper和UrlHelper,他们作为控制器和视图的Html和Url属性暴露出来,供我们使用。

         这里列举一个帮助类的例子:

1 <img src="@Url.Content("~/Content/images/1.jpg")" />2 @Html.ActionLink("HomePage","Index","Home")

         该部分代码渲染之后为:

1 <img src="/Admin/content/images/1.jpg" />2 <a href="/Admin/Home/Index">HomePage</a>

         这两个帮助类只是扩展了框架的一些附加行为。关于他们的扩展方法太多,这里无法一一列举,但之后会用到。

强调一下:HtmlHelper帮我们生成HTML代码,UrlHelper帮我们生成URL地址,所以,只要记住,当我们需要生成HTML代码或URL的时候,就该使用他们了。

 

 2、   简单登陆实战

         网上down一个首页,如图:

图1

         建立简单的模型、控制器,并生成视图。

图2

         在创建视图的时候,不用EF生成,创建空白的视图即可。

 1         public ActionResult Login() 2         { 3             return View(); 4         } 5  6         [HttpPost] 7         public ActionResult Login(LoginModel model) 8         { 9             if (ModelState.IsValid)10             {11                 //简单验证通过12                 return RedirecToLocal("~/Admin/Home");13             }14             else15             {16                 // 如果我们进行到这一步时某个地方出错,则重新显示表单17                 ModelState.AddModelError("", "提供的用户名或密码不正确");18                 return View(model);19             }20         }

         以上代码为登陆控制器的代码。并做了简单的验证。验证通过后,跳转到指定页面。

         通常设涉及到数据问题时,会有很多规则和限制可以使用,比如,字段非空,给字段设置范围区间等等。MVC中控制器可以通过操作ModelState来检查请求是否有效。

 1     public class LoginModel 2     { 3         [Required] 4         [Display(Name = "用户名")] 5         [StringLength(10, ErrorMessage = "必须至少包含{2}个字符", MinimumLength = 3)] 6         public string UserName { get; set; } 7  8         [Required] 9         [Display(Name = "密码")]10         public string UserPwd { get; set; }11 12         [Required]13         [Display(Name = "记住我?")]14         public bool RememberMe { get; set; }15     }

         关于上面的Required、Display、StringLength标记,这是为了对这个属性进行强化控制。

  • 重点说明一下自定义错误信息。数据标记提供了ErrorMessage属性,可以指定返回给用户的错误信息。而不是由Data Annotations API生成的默认信息。就如上面代码中定义字符长度的方法一样。

         定义好错误信息后,那么现在就是需要如何显示这个错误信息了。ViewData.ModelState["UserName"]可以读取到这个错误信息,但这是一个集合,我们需要用迭代循环来显示错误信息,那么就难免要在页面上书写循环来输出错误信息。但是,现在MVC提供能更好的方法来渲染特定属性的错误信息@Html.ValidationMessageFor(string modelName),这个方法让我们省去了循环的代码。如下,一句代码即可完成该效果:@Html.ValidationMessageFor(m => m.UserName)

  • 这里再次提示一下,这里用的验证方法都是在服务端的代码验证,需要在服务器和客户端之间来来回回几次才能验证数据的有效性,那么聪明的你应该瞬间明白我要说什么了,那就是这种验证方式并不是一种节约带宽和服务器资源的好方法。但不可否认,这是一种有效的方法,可以很好的保证数据的有效性、安全性。选择性的使用即可,之后的文章里会优化验证方法,来避免不必要的请求,节约带宽和服务器资源。

         视图中,我们需要用到HtmlHelper和UrlHelper来生成Url和HTML标记。

 1  @using (Html.BeginForm()) 2         { 3             <div class="loginbox"> 4                 <ul> 5                     <li> 6                         @Html.TextBoxFor(m => m.UserName, new { @class = "loginuser", @placeholder = "请输入用户名" }) 7                         @Html.ValidationMessageFor(m => m.UserName) 8                     </li> 9                     <li>10                         @Html.TextBoxFor(m => m.UserPwd, new { @class = "loginpwd", @placeholder = "请输入密码" })11                         @Html.ValidationMessageFor(m => m.UserPwd)12                     </li>13                     <li>14                         <input type="submit" class="loginbtn" name="slogin" value="登陆" />15                         <label>16                             @Html.CheckBoxFor(m => m.RememberMe, new { @checked = "checked"})记住密码17                         </label>18                         <label>19                             <a href="javascript:;">忘记密码?</a>20                         </label>21                     </li>22                 </ul>23             </div>24         }

  上文的代码中,可以看到利用HtmlHelper来生成了几个文本框、复选框等,HtmlHelper的扩展有许多,可以前往MSDN查看详情。

  这里若是想要给生成的标签加上属性或者样式,可以使用new{@属性=“值”}的方式来添加。

3、  参考文献

《Asp.Net MVC4 Web编程》、MSDN

4、  相关下载

源代码:http://download.csdn.net/detail/a406502972/8376701

5、  后记

本文是一个漫长的过程,因为是自己在学习,所以我会精细到我所遇到的每一个问题,每一个细节,所以,写博文比较慢。

也特别希望,各位博友在阅读过程中,多多提点,一方面细化的我学习理解,也强化一下我的文档书写能力。

真诚希望我能从小菜进化到小牛再到大牛。希望阅读的博友们也能从我的学习过程中获得进步!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
从零开始学习 ASP.NET MVC 1.0 (四) View/Model 全解
在ASP.NET MVC中使用DropDownList
扩展ASP.NET MVC HtmlHelper类(翻的)
学习 ASP.NET MVC (第五回)理论篇
ASP.NET MVC中几个运用技巧
ASP.NET MVC中的HtmlHelper类
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服