注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Big鹏 ——学无止境

不谋万世者,不足谋一时;不谋全局者,不足谋一域

 
 
 

日志

 
 

关于Asp.Net的一些小问题  

2014-03-13 19:51:33|  分类: 小技能 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在平时做项目与一些同学的交流中,发现刚开始做B/S的东西时都会有一系列的问题。问题可能不大,但对初学者理解.NetBS的东西还是很有帮助的。下面按着自己的理解总结了几个小方面,请大家参考。

一般处理程序(httphandler)的作用

       一般处理程序是每个学习Asp.Net的初学者都不得不面对的东西,顾名思义,它是作为服务器端处理请求的程序而存在。那么它与.aspx.cs文件的关系呢?写的多了自然就知道了,它们二者都是处理请求的,作用可以说是基本相同的。一般.aspx.cs都配有一个前台页面(.aspx)文件,而它处理正是本身前台页面中web(服务器)控件的事件请求。那么,没有配有后台代码页来处理请求时怎么办呢?当然就是要用一般处理程序来处理请求了,比如一般的html页要向服务器发请求,可以这样写,<form action="TestHandler1.ashx" method="post">action属性指明要处理请求的一般处理程序;又比如点击一个a标签发送请求,可以这样写<a href="TestHandler1.ashx?userName=zhipeng">提交</a>;还有就是在js中发送的请求也都用一般处理程序来处理,像getpostajax方式啥的等等。当然.aspx页中发出的请求也可用一般处理程序来处理,只需像上面指定页面form标签的action属性即可,这样的话它自带的.aspx.cs处理页(默认的请求处理页)就会不起作用。

       大概可以这样理解,如果用web控件(存在于.aspx页)发送请求(事件),那么我们一般选择用它的后台代码页(即.aspx.cs页)来处理请求;如果用前端的代码(jsa标签、form表单提交等请求)发送请求,那么我们一般选择用一般处理程序来处理请求。

js中操纵元素(指html控件)为什么用document.getElementById 替代了传统的直接用id操作元素

       我们知道,元素的id属性是唯一的,之前都是用id属性来直接操作元素的。那么为什么后来被document.getElementById这种方式给取代了呢?因为用id操作元素会分两种情况,如下:

?  当页面中没有<form>标签时,我们直接写元素的id即代表元素本身,如下实例:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>不存在form时</title>
</head>
<body>
<%--不存在form时--%>
<%--<form id="form1">--%>
<div>
姓名:<input type="text" id="myName" />
</div>
<%--</form>--%>

<%--脚本代码写在元素加载完成后--%>
<script>
//直接用id操作元素,不必在元素id前加上form的id
myName.value = "zhipeng";
</script>
</body>
</html>


?  当页面中有<form>标签时,若想用id操作元素必须要在元素id前加上formid.,如下实例:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>存在form时</title>
</head>
<body>
<%--存在form时--%>
<form id="form1">
<div>
姓名:<input type="text" id="myName" />
</div>
</form>
<%--脚本代码写在元素加载完成后--%>
<script>
//操作元素前必须要在元素id前加上form的id,否则获取不到元素
form1.myName.value = "zhipeng";
</script>
</body>
</html>

正是由于这两种情况下用id操作元素时,情况稍有不同,所以出现了用document.getElementById来操作元素,因为它在上面两种情况下都实用(可以试试),所以它就取代了原先用id操作元素的做法。

刷新表单,数据重复提交问题

       刚开始用Asp.Net做网站的同学应该会遇到该问题,当我们用了大量的web(服务器)控件,然后刷新页面或后退页面时肯定会再一次执行你最近一次的表单提交事件(比如点击一个服务器按钮),如下图浏览器会进行提示:

关于Asp.Net的一些小问题 - 王志鹏 - 王志鹏 廊坊师范学院信息技术提高班第九期

    究其原因,用web控件发的请求提交表单时默认都为post方式,而postget方式的区别之一就会导致这个,如下图(为w3school的对比):

关于Asp.Net的一些小问题 - 王志鹏 - 王志鹏 廊坊师范学院信息技术提高班第九期

    按着推理,如果将formmethod属性改为get即可避免该问题。自己测试后发现虽然浏览器不进行上面的提示,但还是无法避免数据重复提交问题。此问题还有待解决,还望大伙多多提示。当然这也是用web控件的一个弊端。

  评论这张
 
阅读(198)| 评论(21)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017