惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Privacy International News Feed
NISL@THU
NISL@THU
Know Your Adversary
Know Your Adversary
G
GRAHAM CLULEY
The Hacker News
The Hacker News
P
Privacy & Cybersecurity Law Blog
S
Schneier on Security
T
Troy Hunt's Blog
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
S
Security Affairs
WordPress大学
WordPress大学
T
Tailwind CSS Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
雷峰网
雷峰网
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
S
Securelist
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
有赞技术团队
有赞技术团队
爱范儿
爱范儿
Help Net Security
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 三生石上(FineUI控件)
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
Last Week in AI
Last Week in AI
S
Security @ Cisco Blogs
博客园 - 司徒正美
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
罗磊的独立博客
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
J
Java Code Geeks
T
Threatpost
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位

博客园 - ruinet

WCF通用服务请求类 使用MVP模式实现B/S和C/S平台的功能通用 WCF中使用扩展行为来验证连接的用户 Microsoft.Practices.Unity依赖注入使用实例 简洁的Asp.net菜单控件 Windows Mobile无线打印的实现 使用HTML,CSS快速导出数据到Excel 软件技术网站精选 CakePHP架构入门 升级Sql Server 2000到Sql Server 2005中要注意的问题 编写第一个Silverlight程序 Saas学习 在Windows Mobile上控制输入法 - ruinet - 博客园 在Windows Mobile创建桌面快捷方式 在仿真设备中使用主机网络 CSS,JavaSript,Html实用小代码 重启PocketPC移动设备 使用Ajax控件引发性能问题 智能移动项目打包发布经验交流
asp.net web开发综合技能
ruinet · 2008-03-17 · via 博客园 - ruinet

2008-03-17 20:26  ruinet  阅读(891)  评论()    收藏  举报

1.设置TextBox为只读
   大家在想将TextBox控件设置为只读还不容易吗?但如果你是用到Ajax在客户端改变控件的值,再在服务器获取,如果直接将Textbox设置为Enble 设置为false,那么在客户端改变了值,在服务器端还是获取不到。我开始开发的时候,还以为只读控件就直接用Lable控件就好,后来发现一样的在客户端能改变值,但在服务器端获取不到。唯一可行的是用下面的设置:
          textBox.Attributes["readonly"] = "readonly";
2.在服务器端控制Html控件的显示&隐藏

Code


3.弹出新的窗口
   要想弹出一个新的窗口,1:是通过链接,设置target属性 为_blank 。
  2:是通过window.open
  我要说的不是通过链接来实现,通过window.open,可以通过    Response.Write 输出javascript脚本,但是这样输出的javascript在页面的最上面,更不好的是,这样输出后改变的页面的样式,字体设置的样式都随之改变,所以有问题。
  我解决的是通过ClientScriptManager.RegisterStartupScript注册起始运行脚本,这样生成的脚本在页面的最下面,不扰乱页面的结构。
   StringBuilder script = new StringBuilder();
      script.Append("<script language=javascript>");
      script.AppendFormat("window.open('text.aspx');");
      script.Append("</script");
    
ClientScriptManager ScriptMag = page.ClientScript;
    
if(!ScriptMag.IsStartupScriptRegistered (page .GetType() ,"print"))
      {
        ScriptMag.RegisterStartupScript (page.GetType() ,"text",script.ToString ());
      }

3在客户端访问服务器
   在客户端访问或提交数据到服务器端,总的来说就是通过javacript异步访问服务器。

   前提实现XMLHttpRequest,可以通过asp.net中的ajax,或JQuery中封装好了的ajax,或自己封装。例如:

    1.调用asp.net中ajax

在页面加入ScriptManger,如果是调用页面方法EnablePageMethods要设为true,如果访问webService设置webservice路径。

<asp:ScriptManager id="AjaxMag" runat="server" EnablePageMethods ="true"  ScriptMode="Release" >
        <Services
><asp:ServiceReference Path ="~/WebService/comm.asmx" InlineScript="true" /></Services>
<
/asp:ScriptManager>

  调用 Page Method

//xxx.aspx.cs页面定义
[System.Web.Services.WebMethod]
  
public static string[] GetList(string key)
 {
   
return new string[]{
     
"AAAAAAAAA","BBBBBBBB","CCCCCCC","DDDDDD"
   };
 }

//javascript 调用PathMethods
var key ="a";
var x 
PageMethods.GetList(key,
function(result){
    
var x ;
    document.write (
"list count:" + result.length + "<br/>");
    
for (x in result)
    {
     document.write (result[x] 
+"<br/>");
    }
};

调用WebService 中Methods

//Web Service定义
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
//加入此
[System.Web.Script.Services.ScriptService]
public class comm : System.Web.Services.WebService {public comm () {
    }

    [WebMethod]

public string[] GetList(string key) {
        
return new string []{"aaa","bbb","cc"};
    }
}

//javascript 访问web service
var key="A";
comm.GetList(key,
function(result){
          
var x ;
          document.write (
"list count:" + result.length + "<br/>");
          
for (x in result)
          {
            document.write (result[x] 
+"<br/>");
          }
    });

 2.自定义XMLHttpRequest

var xmlHttp;
var viewModel;
//建立异步处理对象
function createXMLHttpRequest() {
    xmlHttp 
= false;
    
//开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest) { //Mozilla 浏览器
        xmlHttp = new XMLHttpRequest();
        
if (xmlHttp.overrideMimeType) {//设置MiME类别
            xmlHttp.overrideMimeType('text/xml');
        }
    }
    
else if (window.ActiveXObject) { // IE浏览器
        try {
            xmlHttp 
= new ActiveXObject("Msxml2.XMLHTTP");
        } 
catch (e) {
            
try {
                xmlHttp 
= new ActiveXObject("Microsoft.XMLHTTP");
            } 
catch (e) {}}
        }
        
if (!xmlHttp) { // 异常,创建对象实例失败
            window.alert("不能创建XMLHttpRequest对象实例.");
            
return false;
        }
}
function AsynGet()
{
  createXMLHttpRequest();
  viewModel
=model;
  url
="Handler.ashx?key=A";
  xmlHttp.open(
"GET", url, true);
  xmlHttp.onreadystatechange 
= callback;
  xmlHttp.send(
null);
}
function callback()
{
    
if (xmlHttp.readyState == 4
    {     
        
if (xmlHttp.status == 200
        {   
                  
var result = xmlHttp.responseText;
                  document.getElementById(
"lblMsg").innerHTML=result
                  
var arr =result.split(',');
                  
var x ;
                  
for (x in arr)
                  {
                    document.write(arr[x] 
+ "<br />");
                  }
                }
        
else
        {
            
//显示错误信息
        }
    }
}

 3.使用JQuery Ajax:

var sendData="key=A";
$.ajax({
      type: 
"POST",
      url:
"Handler.ashx",
      data:sendData,
      success:
function(result){
         $(
"#lblMsg").text(result);
         
var arr = result.split(',');
         
var x;
         
for (x in arr)
         {
          document.write(arr[x] 
+ "<br/>");
         }
      }
});

 所访问的Handler.ashx

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler {
    
public void ProcessRequest (HttpContext context) {
        context.Response.ContentType 
= "text/plain";
        context.Response.Write(
"AAA,BBB,CC");
    }
    
public bool IsReusable {
        
get {
            
return false;
        }
    }
}

 动态加载Javascript和CSS

 在Head中加Javascript和CSS  

     HtmlGenericControl script = new HtmlGenericControl("script");
      script.Attributes[
"type"= "text/javascript";
      script.Attributes[
"src"= "comm.js";

      Page.Header.Controls.Add(script);

      HtmlGenericControl css 

= new HtmlGenericControl("link");
      css.Attributes[
"type"= "text/css";
      css.Attributes[
"href"= "style.css";
      css.Attributes[
"rel"= "stylesheet";
      Page.Header.Controls.Add(css);

在页尾加Javascript

string js = "<script type=\"text/javascript\" src=\"comm.js\"></script>";
      ClientScript.RegisterStartupScript(GetType(),
"js",js);

 Ajax防止乱码处理

代码

 <script type ="text/javascript">
    
    
function OnClientAjax()
    {
      
var value ="中文测试~!@#$%^&*()-+_`123/45";
   
      $.ajax({
       type: 
"POST",
        url: 
"output.aspx",
        data: 
"value=" + urlEncode(escape(value)),
        success: 
function(msg){
           alert(msg);
       }
     });
    }
    
    
function urlEncode(s) 
    {
     
return s.replace(/\+/g, '%2b').replace(/\"/g,'%22').replace(/\//g,'%2f');
    }
   
    
</script>

 protected void Page_Load(object sender, EventArgs e)
    {
            
string value =Server.HtmlDecode (Request["Value"]);

            Response.Write(value);
    }