博客里的好多文章都是本人看着比较好,就转过来的,好少自己亲自去写点什么,也很少把自己学的一点心得于大家分享,今天特别想聊一下,关于本人做Net开发时的那段回忆!





一、关于知识的回忆

还记得Handlere吗?

我记得Handler做图片防盗链时,有这么一个功能!

 
 1 public class ImgHandlerTest: IHttpHandler
2 {
3 public void ProcessRequest(HttpContext context)
4 {
5 Uri url = context.Request.UrlReferrer;//从哪个地址过来的
6 if (url == null)
7 {
8 context.Response.End();
9
10 }
11 if (url.Host.ToString().Contains(".oa.com"))
12 {
13 context.Response.WriteFile(context.Request.FilePath);
14 }
15 else
16 {
17 context.Response.End();
18
19 }
20 context.Response.End();
21 }
22 public bool IsReusable
23 {
24 get { return true; }
25 }
26 }
 

还记得Module吗?那时我们做过IP禁止访问,也就是可以限制某些IP访问我们的程序

 
 1 public class IpTestModule:IHttpModule
2 {
3
4 public void Init(HttpApplication context)
5 {
6 context.BeginRequest += context_BeginRequest;
7 }
8
9 void context_BeginRequest(object sender, EventArgs e)
10 {
11 //string ip = Common.CommonFun.GetIP();
12 //if (ip == "127.0.0.1")
13 //{
14 // HttpApplication app = sender as HttpApplication;
15 // app.Context.Response.End();
16 //}
17 }
18 public void Dispose()
19 {
20
21 }
22 }
 

用Module的时候,不知道你记得否了,没有asp.net mvc 的时候,你是否用Module做过登录验证呢?

 
public  class LoginModule:IHttpModule,System.Web.SessionState.IRequiresSessionState
{ public void Dispose()
{
throw new NotImplementedException();
} public void Init(HttpApplication context)
{
context.AcquireRequestState+=context_AcquireRequestState;
} private void context_AcquireRequestState(object sender, EventArgs e)
{
//HttpApplication app = sender as HttpApplication;
//string url = app.Context.Request.RawUrl;
//if (url.Contains(".aspx") && !url.Contains("login.aspx")||(url.Contains("ashx")&&!url.Contains("CreateImageCode.ashx")))
//{
// if(app.Context.Session["LoginUser"] ==null)
// {
// app.Context.Response.Redirect("~/login.aspx");
// app.Response.End();
// }
//}
} }
//当然还有同样的另一种方法
 

那时候你用过EasyUI吧,你记得EasyUI里哪些东西是你容易忘掉或者入坑的吗?

 
//easy ui文档要好好看吧
//Id ID 你入过坑吗?
//easy ui的客户端表单验证你会吗?
//知道datagrid列表的选中行ID通过什么拿到吗?
//当年老师说你们删除像这么玩
dele: function () { var rows = $("#datalist").datagrid("getSelections");
if (rows.length <= 0) {
$.messager.alert("提示", "没有选中的行", "info");
return; }
//将选择到的行存入数组并用,分隔转换成字符串,
var ids = [];
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].ID);
}
var idsStr = ids.join(","); //使用jquery和 服务端进行交互 ajax
$.ajax({ url: '../../ashx/DepartmentHandler.ashx',
dataType: "text",
data: { ids: idsStr,action:"delete" },
type: "POST",
beforeSend: function () {
// 禁用按钮防止重复提交
$.messager.progress({ title: "执行中", text: "" }); },
success: function (data) {
$("#datalist").datagrid("load", { action: "search" });
$.messager.alert("成功",data,"info");
},
complete: function () {
$.messager.progress("close");
},
error: function () {
$.messager.alert("警告", "对不起,系统出现错误,请联系管理员!");
} }); }
 

当easyUI表单提交时,拿的对表单的验证你还记得吗?

 
Save: function () {

                var parentId = $("#dptComTree").combotree("getValue");
var bool = $("#fm").form("validate");
if (bool) {
var data;
if (obJdpt.opType == "1") {
data = { name: $("#dptdialog input[name='name']").val(), action: "add", pid: parentId }; } else { data = { id: $("#dptdialog input[name='id']").val(), name: $("#dptdialog input[name='name']").val(), action: "update", pid: parentId }; }
$.ajax({ url: '../../ashx/DepartmentHandler.ashx',
dataType: "json",
data: data,
type: "POST",
beforeSend: function () {
// 禁用按钮防止重复提交
$.messager.progress({ title: "执行中", text: "" }); },
success: function (data) {
//if (obJdpt.state == "1") {
// $("#dptdialog input[name='name']").val(data.data.name);
// $("#dptComTree").combotree("setValue", [{ id: data.data.pid, text: data.data.pname }]);
// $("#dptdialog input[name='id']").val(data.data.id);
//}
$("#datalist").datagrid("load", { action: "search" });
$("dpttree").tree("reload");
$.messager.alert("成功", data.msg, "info");
},
complete: function () {
$.messager.progress("close");
$("#dptdialog").dialog("close");
//清掉表单的值
$("#fm").form("reset"); },
error: function () {
$.messager.alert("警告", "对不起,系统出现错误,请联系管理员!");
} }); } }
 

这里我想说,在每次添加完数据,要清空数据,这个是不是说了千千万万了

 
complete: function () {
$.messager.progress("close");
$("#dptdialog").dialog("close");
//清掉表单的值
$("#fm").form("reset"); }
 

你还记得你们老大叫你做表单验证吗?

 
<div id="dptdialog">
<form id="fm" method="post"> /*还记得表单里那些low掉牙的隐藏域吗?**/
<input name="id" type="hidden" />
<div class="dialog-table"> <table width="100%" border="0" cellpadding="0" cellspacing="0" class="tk_table"> <tr>
<td>上级部门</td>
<td class="white-tr">
<input id="dptComTree" type="text" />
</td> </tr>
<tr>
<td>名称</td>
<td class="white-tr">
<input name="name" id="txtDptName" type="text" class="easyui-validatebox" data-options="required:true" />
</td>
</tr>
</table>
</div>
</form>
</div>

你还记得那个树形图吗,还记得那个加载树吗?

$("#dptComTree").combotree("setValue", [{ id: obJdpt.pid, text: obJdpt.ptext }]);
var parentId = $("#dptComTree").combotree("getValue");
$("#txtDptName").focus();

好了,这是回忆第一篇章,主要是一些webform配合easyUI的一些小的知识点,接下的文章会涉及到的知识有:asp.net MVC 配合easyUI项目的坑,有BootStrap+HTML+ajax+jq的轻型项目的总结还有关于:菜虫网电商项目时,遇到的一些坑,比如说发邮件时,邮箱服务器的坑,这个也就是当时开发忘记密码遇到的,还有网页记录回传的坑,这些内容下面的文章都会回忆 到!

【.Net】Net开发的更多相关文章

  1. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  2. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  3. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  4. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  5. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  6. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  7. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  8. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  9. 读书笔记:《HTML5开发手册》--HTML5新的结构元素

    读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...

  10. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

随机推荐

  1. 20155231 实验四 Android程序设计

    20155231 实验四 Android程序设计 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事 ...

  2. 20155235 《Java程序设计》 实验二 实验三 敏捷开发与XP实践

    20155235 <Java程序设计> 实验二 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验内容 没有Linux基础的同学建议先学习<Linux基础入 ...

  3. 20155235 《Java程序设计》 实验二 Java面向对象程序设计

    20155235 <Java程序设计> 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L ...

  4. 2017-2018-1 20155323《信息安全技术》实验二 Windows口令破解

    2017-2018-1 20155323<信息安全技术>实验二 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 系统环 ...

  5. [BZOJ4444][SCOI2015]国旗计划-[ST表]

    Description 传送门 Solution 说真的这道题在场上没做出来的我必定是脑子有洞.. 我们用st表记录以某个位置开始,派了1<<j个战士能到达的最远位置. 由于边境线是一圈, ...

  6. JavaScript之数组的常用操作函数

    js对数组的操作非常频繁,但是每次用到的时候都会被搞混,都需要去查相关API,感觉这样很浪费时间.为了加深印象,所以整理一下对数组的相关操作. 常用的函数 concat() 连接两个或更多的数组,并返 ...

  7. 【LG3703】[SDOI2017]树点涂色

    [LG3703][SDOI2017]树点涂色 题面 洛谷 题解 更博辣,更博辣!!! 猪年的第一篇博客 一次只能染根到\(x\),且染的颜色未出现过 这句话是我们解题的关键. 设\(x\)到根的颜色数 ...

  8. 修改表的字段顺序(mysql)

    ALTER TABLE 表名 CHANGE 字段名 字段名 int not null default 1 AFTER 它前面的字段;

  9. javaweb(十一)——使用Cookie进行会话管理

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  10. MAC清理DS_Store和._文件

    打开终端输入 find . -name .DS_Store -type f -delete ; find . -type d | xargs dot_clean