Asp.Net MVC4 + Oracle + EasyUI + Bootstrap
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap
--操作数据和验证
本文链接: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、 简单登陆实战
首先,先勾画一个登陆的风格样式,如图:

图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 else
15 {
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、 后记
本文是一个漫长的过程,因为是自己在学习,所以我会精细到我所遇到的每一个问题,每一个细节,所以,写博文比较慢。
也特别希望,各位博友在阅读过程中,多多提点,一方面细化的我学习理解,也强化一下我的文档书写能力。
真诚希望我能从小菜进化到小牛再到大牛。希望阅读的博友们也能从我的学习过程中获得进步!
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap的更多相关文章
- Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 1
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 序章 -- 新建微软实 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第二章
Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
Asp.Net MVC4 + Oracle + EasyUI 第一章 --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.html 文章集合 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 序章
Asp.Net MVC4 + Oracle + EasyUI 序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1. 简 ...
- sp.Net MVC4 + Oracle + EasyUI + Bootstrap2
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 第二章 Asp.Net MVC4 + Oracle + EasyUI + Bootstrap 第二章 --使用 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)
转自:http://www.cnblogs.com/ymnets/p/3424309.html 曾几何时我想写一个系列的文章,但是由于工作很忙,一直没有时间更新博客.博客园园龄都1年了,却一直都是空空 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...
随机推荐
- java main方法背后的故事?(转)
jvm java 看似一种语言,实则一个巨大的体系的王国,开发这么多年了,还是没有搞懂,我以为我懂了,可是过了一段时间又忘了,所以说还是没懂 1.main方法说起 编译完我们的java文件后,需要有个 ...
- Reorder List [leetcode] 这两种思路
第一个想法随着vector保存全部Node* 表拼接出来 void reorderList(ListNode *head) { vector<ListNode*> content; Lis ...
- 【ASP.NET】判断访问网站的客户端是PC还是手机
原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariable ...
- quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
游戏嘛.没有图片没有图片可以称为你的游戏,所以,我们看一下使用quick如何创建精灵的方式. quick的api精灵族的创造仍然是非常具体的解释.因此,建立非常easy. display.newSpr ...
- cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()
转载请注明出处:游戏开发实验室http://blog.csdn.net/u010019717/article/details/32942641 我在编写游戏的时候遇到了这个问题. 物理引擎其它的内容 ...
- 王立平--android特权
//同意应用程序访问和更改checkin数据库"properties"数据表 android.permission.ACCESS_CHECKIN_PROPERTIES //同意应用 ...
- mvc与My97DatePicker插件的结合
Razor视图引擎与My97DatePicker插件的结合 1 using System; 2 using System.Collections.Generic; 3 using System.Run ...
- 关于继承modelDriven接口action的ajax来电参数
例如 Model类如下面,Teacher,public class Teacher{ private Integer id. priavte String name; private Sch ...
- JavaScript中的各种奇葩问题
原文:JavaScript中的各种奇葩问题 JavaScript浮点数 var a = (0.1 + 0.2) + 0.3; var b = 0.1 + (0.2 + 0.3); console.lo ...
- HR系统邮件审批功能总结
时至今日,来兰亭工作的第三个小任务算是暂时告一段落了.这个小任务是耗费时间最长的,因此在这里总结整理一下. 首先这个功能的出发点是方法领导进行手下员工的审批,包括加班申请,休假申请,和漏打卡申请.由于 ...