ASP.NET 常见问题 和 网页上加上百度搜索

80酷酷网    80kuku.com

  asp.net|百度|网页|问题

如何在类库中的类文件里使用Response,Request,Server,Session几种对象。我这里有如下方式,仅供参考:
      首先我们要在类文件里引用using System.Web;using System.Web.SesstionState;命名空间,然后是对这种对象的声明:
       HttpSessionState Session;
       HttpServerUtility Server;
       HttpRequest Request;
       HttpResponse Response;

最后我们可以在构造函数里做如下处理:
      try
      {
            Session = ((System.Web.UI.Page)parent).Session;
            Server = ((System.Web.UI.Page)parent).Server;
            Request = ((System.Web.UI.Page)parent).Request;
            Response = ((System.Web.UI.Page)parent).Response;
      }
      catch
      {
            Server = ((System.Web.UI.UserControl)parent).Server;
            Session = ((System.Web.UI.UserControl)parent).Session;
            Request = ((System.Web.UI.UserControl)parent).Request;
            Response = ((System.Web.UI.UserControl)parent).Response;
      }
以上做完,你就可以在类库里直接使用这几种对象了。
返回历史页面
在提交的时候过程很长,为了防止用户再次点击而且为了界面友好可以用一个层遮住所有按钮再显示个提示信息,等服务器端处理完成再导航到本页(location.language =javascript >

                            window.document.title =tl;

                   </script>

.cs中:

              string s="123456";

              Response.Write("<script language=javascript>var tl='"+ s +"'</script>");

2)

                   <title><%=s%></title>

.cs中:

         public string s="123456";

使用protected修饰也行,但internal修饰则出错,???

3)

                   <title><%=Method()%></title>

.cs中:

         public string Method()

         {

              return "123456";

         }

同二,使用internal修饰也不行???

 

6遇到的问题:

关于params关键字

解决方法:

         private void Page_Load(object sender, System.EventArgs e)

         {

              // 在此处放置用户代码以初始化页面

              string[] sArray=new string[3];

              sArray[0]="aaa";

              sArray[1]="bbb";

              sArray[2]="ccc";

              Method1(sArray);

//            Method1("aaa","bbb","ccc");      //error

              Method2(sArray);

              Method2("aaa","bbb","ccc");

         }

         private void Method1(string[] s)

         {

              string temp="";

              foreach(string e in s)

              {

                   temp+=e;

              }

              this.TextBox1.Text =temp;

         }

         private void Method2(params string[] s)

         {

              string temp="";

              foreach(string e in s)

              {

                   temp+=e;

              }

              this.TextBox2.Text =temp;

         }

 

7遇到的问题:

关于__doPostBack()方法?

解决方法:

页面一:

提供一个锚点:

<a >open webform2</a>

一个文本框,用于显示一些信息:

<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

一个隐藏的服务器button:

<asp:Button id="Button1" runat="server" Text="Button" Visible="False"></asp:Button>

Button的后台事件为:

private void Button1_Click(object sender, System.EventArgs e)

{

     this.TextBox1.Text ="has click...";

}

页面二:

添加一个服务器按钮,添加事件:

private void Button1_Click(object sender, System.EventArgs e)

{

     string s="<script language=javascript>";

     s+="window.opener.__doPostBack('Button1','');";

     s+="</script>";

     this.Page.RegisterClientScriptBlock("a",s);

}

此时,在页面二中无法成功地触发页面一中的__doPostBack()事件,是由于在没有某些特定控件的时候,html文件中并不会产生__doPostBack()函数的javascript代码,所以在页面二中点击按钮时会提示“对象不支持此方法”:

<script language="javascript">

<!--

     function __doPostBack(eventTarget, eventArgument)

{

         var theform;

         if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {

              theform = document.forms["Form1"];

         }

         else {

              theform = document.Form1;

         }

         theform.__EVENTTARGET.value = eventTarget.split("$").join(":");

         theform.__EVENTARGUMENT.value = eventArgument;

         theform.submit();

     }

// -->

</script>

要使用页面内容中产生以上代码,可以添加一个LinkButton控件(好像只有该控件可以??)

另外的方法是在Page_Load()加上下面方法:

this.Page.GetPostBackEventReference(Button1);

上面方法将触发产生__doPostBack()的javascript代码,msdn中的解释是:

“获取对客户端脚本函数的引用,调用该函数将使用服务器发送回该页”

以上代码可以应用于在子窗口中修改数据,然后刷新父窗口的情况

另外,注意“__doPostBack()”,方法名中是两道下划线,并且区分大小写。

 

8遇到的问题:

关于.net及sqlserver中的日期类型

解决方法:

例子:Northwind--employees--birthdate

this.TextBox1.Text =dr.GetDateTime(0).ToString();输出:1948-12-8 0:00:00

this.TextBox1.Text =dr[0].ToString();输出:1948-12-8 0:00:00

this.TextBox1.Text=dr.GetDateTime(0).ToShortDateString();输出:1948-12-8

this.TextBox1.Text=dr.GetDateTime(0).ToString("yyyy#mm#dd");输出:1948#00#08

  在装了vs2003以后 从新装了iis后需要注册asp.net 不然提示说不是asp.net
:\Documents and Settings\Administrator>C:\WINNT\Microsoft.NET\Framework\v1.1.43
2\aspnet_regiis -i
开始安装 ASP.NET (1.1.4322.0)。
已安装完 ASP.NET (1.1.4322.0)。

  9遇到的问题:

关于脚本的调试

解决方法:

1调整IE选项--高级--取消“禁止脚本调试”

2直接运行你将要调试的aspx页面

3当页面呈现完成时,回到vs.net中,调试--窗口--运行文档,窗口右侧将出现当前IE中的aspx页面的名称,双击它,此时页面的html源文件将显示在vs.net的窗口中,这样就可以在html文件中设置断点。

 

0遇到的问题:

关于存储过程的调试

解决方法:

在查询分析器中展开左侧的对象浏览器(按F8,或“工具”--“对象浏览器”打开),展开存储过程,选择要调试的存储过程,右键,调试/debug

如果存储过程存在输入参数,则输入测试参数值,即可进行调试界面,F11单步

<form action="http://www.baidu.com/baidu" target="_blank">
            <div align="center">
                <input name="tn" type="hidden" value="baidu"> <a href="http://www.baidu.com/"><img src="http://file.wbgxw.com/UpLoadPic/2007-5/200756235642142.gif" alt="Baidu" align="bottom"
                        border="0"></a> <input type="text" name="word" size="30"> <input type="submit" value="百度搜索">
            </div>
        </form>

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: