yuezhonghu

悠然现南山...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

项目开发中小问题杂记

Posted on 2008-05-14 15:03  .狐狸血.  阅读(233)  评论(0编辑  收藏  举报

一、最基本的事件不响应(如:点击没有任何反应)
在HTML中有多个form表单存在

二、在类中调用session或request等
   System.Web.HttpContext.Current.Session["id"](.request、.response等)

三、回退过期< 注:使用脚步JS的location.url=''可以实现js的跳转也可以实现,但是如何用呈现实现? >
1、禁止缓存
在我找到的许多方案中,其中有一种建议禁止页面缓存。具体是使用服务器端脚本,如下所示:
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
这种方法非常有效!它强制浏览器重新访问服务器下载页面,而不是从缓存读取页面。使用这种方法时,编程者的主要任务是创建一个会话级的变量,通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否应该允许用户打开这个页面。

2、JS阻止回退
<SCRIPT language="JavaScript">
window.history.forward(1);
</SCRIPT>
这种方法是用于防止由下一个页面返回的。
简单的说,页面A(A中有这段代码)转向页面B,
这时,B向A转向是被禁止。

四、Server Application Unavailable
1、终极解决方法:重启服务器 2、重启IIS  3、重启IIS服务

五、JS报错(转换为服务器端控件后的错误)
1、当初始化时,把客户单控件的样式:style="display: block",并且把该控件转换为服务端控件了就会报这种错误

六、服务器端控件 既要JS提示 也要执行服务器端点击事件
在page_load()里写入:
Button1.Attributes.Add("onclick", "javascript:if(confirm('群发订阅邮件可能需要几分钟的时间,是否继续群发订阅邮件?')){ return true; }else{ return false; }");

七、JS取消服务端控件的提交事件
form1.cancelSubmit();

八、父窗口中用showModalDialog()打开一个aspx页面  
  为了消除缓存,已在模态对话框的head标签中加入  
  <META   http-equiv="Pragma"   content="no-cache">  
  为了防止任何在模态对话框中回发服务器的操作都会再开一个新页,也在head标签中加入了  
  <base   target="_self">  
   
  但是测试表明,此举对IE6(或5.5以上)有效而对IE5无效!

九、异常:Object reference not set to an instance of an object.
   本质就是:未将对象引用设置到对象实例
   原因 就是在没有给对象实例化或不存在引用的对象值。
   解决办法:断点调试...情况不经相同

十、异常:数据库连接池满,超过最大连接数....
   本质:即使在数据底层类中使用的都是规范的函数并且 sqlconnection都释放了并且dispone()了,但是还有该错误!
   原因:因为在关闭sqlconnection时都有一个时间延迟(缓冲),所以在一个页面的业务逻辑过多,并且平凡实例化底层类对象或链接数据库时,就会出现这种异常错误。
   解决办法:在业务层操作时,尽量实例化一个公共的底层对象或者一个数据库链接,最后统一释放掉该对象。
   例如:实例化一个公共链接数据库的对象,本页都使用该对象,最好在 protected override void OnLoad(EventArgs e) 函数中释放掉。
   备注:网上提供了很多方法,但是解决不了这种业务逻辑过多的情况。

 

十一、eWebEdior编辑器赋值、取值

JS:

    if (frames.eWebEditor1.eWebEditor.document.body.innerHTML == '') {
        alert("内容不能为空");
        frames.eWebEditor1.eWebEditor.document.body.focus();
        return false;
    }

C#(CS文件)

首先要把 IFRAME对象eWebEditor1和它的带着个一个隐藏域content1(默认name,要给他一个ID)都添加

runat="server";

取值:string str=eWebEditor1.innerHTML;

赋值:content1.value="赋的值";(在加载时,eWebEditor1.innerHTML会自己显示隐藏域中的内容)