zoukankan      html  css  js  c++  java
  • ASP.NET Notes

    ASP页面和WEB控件的生命周期

    参考:https://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.80).aspx

    七种页面跳转的方法介绍

    参考:http://www.csharpwin.com/dotnetspace/12885r562.shtml

    1、利用HTML标签

    2、HyperLink控件

    3、Response.Redirect()方法

    4、Server.Transfer()方法

    5、 Server.Execute()方法

    6、Javascript实现跳转

    7、Respone.Write()

    页面跳转总结

    1)当需要把用户跳转到另一台服务器上的页面的时候使用redirect

    2)当需要把用户跳转到非aspx页面时候,如html使用redirect

    3)需要把查询字符串作为url一部分的时候保留传给服务器的时候,因为其他2种方法不能做到2次postback,把数据先带回服务器使用redirect

    4)需要aspx页面间的转换(不涉及登录) 使用transfer

    5)当需要把aspx页面的输出结果插入到另一个aspx页面的时候使用execute方法。

    6)如果要让用户来决定何时转换页面以及转到哪一个页面,超级链接最适合。

    7)如果要用程序来控制转换的目标,但转换的时机由用户决定,使用Web服务器的HyperLink控件,动态设置其NavigateUrl属性。

    8)如果要把用户连接到另一台服务器上的资源,使用Response.Redirect。

    9)如果要将查询字符串作为URL的一部分保留,使用Response.Redirect。

    10)如果要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。

    11)如果要捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置,则使用Server.Execute。

    12)如果要确保HTML输出合法,请使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。

    postback(回发)后如何保持网页的位置

    通常情况下,ASP.NET 页面 PostBack(回发)后,页面一般定位在整个网页的顶部!但我们在实际项目中经常需要,回发后能定位到自己刚刚点击提交按钮位置,那这种情况如何实现呢,下面介绍三种实现些功能的方法

    一、应用程序级设置:在web.config中增加一个pages节点

          <pages maintainScrollPositionOnPostBack="true">

    二、页面级设置:在aspx页面上进行设置,在页面的page指令中增加属性

         <@page MaintainScrollPositionOnPostback="true"

    三、在后台cs代码中设置

          Page.MaintainScrollPositionOnPostBack = true;

    Server.MapPath & Request.MapPath

    一、Server.MapPath()应用

    假设当前的网站目录为E:wwwroot 应用程序虚拟目录为E:wwwrootcompany 浏览的页面路径为E:wwwrootcompany ews 下面的一个 aspx页面。

    在该页面中使用

    Server.MapPath(””) :返回当前页面所在的物理文件路径:E:wwwrootcompany ews

    Server.MapPath(“/”) :返回应用程序根目录所在的物理文件路径:E:wwwroot

    Server.MapPath(“./”) :返回当前页面所在的物理文件路径:E:wwwrootcompany ews

    Server.MapPath(“../”):返回当前页面所在的上一级的物理文件路径:E:wwwrootcompany

    Server.MapPath(“~/”):返回应用程序的虚拟目录(路径):E:wwwrootcompany

    Server.MapPath(“~”):返回应用程序的虚拟目录(路径):E:wwwrootcompany

    二、ASP.NET中Server.MapPath() 和 Request.MapPath()使用区别:

    Server.MapPath(string) :是将相对于当前调用文件的文件(或目录)映射为物理路径;

    Request.MapPath(string) :是将string虚拟路径映射为物理路径(asp中Request无此方法)

    Server.MapPath(string) 中string 可以用“../”方式引用父目录,甚至可以将此目录跳到整个WEB目录外,如:C:WWWROOT

    目录为WEB根目录,在根目录文件中调用此Server.MapPath(“../脚本文件”),则可以调用WEB目录外的脚本、资源等。

    Request.MapPath(string) 中的string为虚拟目录,只能相对WEB虚拟目录形式的,也不允许”../”方式调用,只能是”/”,”/xx”等字符串

    string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。

    string str2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。

    string str3=Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。

    string str4=AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集。

    string str6=Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。

    string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称.

    向服务端控件添加自定义Attributes

    向服务端控件添加的自定义Attributes后,还需要override关于ViewState的两个方法,以保证新增的Attributes值能正常的使用。

    参考地址:http://www.xuebuyuan.com/53996.html [原创]实现给DropDownList下拉框控件子项增加自己Attribute特性…

        protected override object SaveViewState()
            {
                object[] objs = new object[2];
                objs[0] = base.SaveViewState();
                ArrayList list = new ArrayList();
                objs[1] = list;
                foreach (ListItem item in this.Items)
                {
                    Hashtable hash = new Hashtable();
                    foreach (object key in item.Attributes.Keys)
                    {
                        hash.Add(key, item.Attributes[key.ToString()]);
                    }
                    list.Add(hash);
                }
                return objs;
            }
            protected override void LoadViewState(object savedState)
            {
                object[] objs = (object[])savedState;
                base.LoadViewState(objs[0]);
                ArrayList list = (ArrayList)objs[1];
                for (int i = 0; i < list.Count; i++)
                {
                    Hashtable hash = (Hashtable)list[i];
                    foreach (object key in hash.Keys)
                    {
                        Items[i].Attributes.Add(key.ToString(), hash[key].ToString());
                    }
                }
            }

    Web控件数据绑定

    参考:http://blog.csdn.net/Joetao/article/details/5051734http://www.cnblogs.com/xiaobaihome/archive/2011/12/08/2280184.html 

  • 相关阅读:
    laravel 表单接收
    Ubuntu查找通过apt命令已安装软件
    Centos7.2源码编译安装LA(N)MP
    文件和目录权限
    第六天 软件安装和管理
    第五天用户和组群账户管理
    第四天 文件和目录操作
    第三天 目录和文件
    第二天 linux命令
    oracle数据库学习第一天
  • 原文地址:https://www.cnblogs.com/huhunet/p/7402765.html
Copyright © 2011-2022 走看看