页面转向的四种方法
1. 超链接
2. Response.Redirect("UrlString")
3. Server.Transfer("UrlString")
4. PosrBackUrl: 控件属性
超链接
静态超链接
<a href ="http://..." > ... </a>
Web控件 动态的添加
HyperLink hl = new HyperLink();
hl.NavigateUrl = "http://...";
hl.Text = "webName";
PanelControl.Controls.Add(hl);
BulletedList - HyperLink 模式
Response.Redirect(UrlString)
重定向
浏览器 提交给服务器 --- 编译 ---发回浏览器 --- 重新操作 ---发送到目标服务器 ---- 服务器再响应 --- ...
Server.Transfer(UrlString)
重定向
浏览器 提交给服务器 --- 编译 ---发回浏览器 --- 重新操作 ---
两者比较
Response.Redirect 执行效率低 可以转向其他站点 可带QueryString参数
Server.Transfer 执行效率高 不可转向其他暂定 无显示目标地址 存在bug
注意:
Server.Transfer 只能是本站内的URL跳转
Server.Transfer 存在一些已知的第三方控件冲突
Server.Transfer 隐藏目标地址,浏览器无法获取url
PostBackUrl 属性
凡是具有 IButtonControl 接口的控件都有 PostBackUrl 属性,用来定义提交至那个页面地址。
可以是本站 也可以是外站。
这些目标地址可以调用原页面中的控件值,可作为页面传值的一个方法。
例如:
Response.Redirect("http://......");
Server.Transfer("/default.aspx");
绝对路径:"~/img/1.png;" "~"为根目录符号
<asp:LinkButton ... PostBackUrl="/default.aspx"> ... </asp:LinkButton > 主要是为了传递数值
Web控件 动态的添加
HyperLink hl = new HyperLink();
hl.NavigateUrl = "http://...";
hl.Text = "webName";
PanelControl.Controls.Add(hl);
动态创建HyperLink超链接:
自定义一个函数 添加HyperLink (\u0081 # ; \u0080 $)
创建一个保存文本信息的文本框,可以 Visible = "false"; 隐藏起来,动态网页制作的一个小技巧
public partial class Default: System.Web.UI.Page
{
protected void addLink(string nameurl)
{
string[] s = nameurl.Replace("\u0081","").Split('\u0080');
HyperLink hl = new HyperLink();
hl.Text = s[0];
hl.NavigateUrl = s[1];
pnl.Controls.Add(hl); // 添加hl超链接至网页中的一个容器 Panel pnl;
}
Page_Load()
{
//txt_links.Text 用于存放已经添加的超链接
if(txt_links.Text != "") {
string[] arrS = txt_links.Text.Split('\u0081');
foreach (string _s in arrS)
{
if( _s != "" ){ addLink(_s); }
}
}
}
string _name, _url;
_name = txt_name.Text;
_url = txt_url.Text;
if(_name != "" && _url != "")
{
string _addlinktxt;
_addlinktxt = _name + '\u0080'+ _url + '\u0081';
addlink(_addlinktxt);
txt_name.Text = txt_url.Text = "";
txt_links.Text += _addlinktxt; //添加新的超链接至 txt_links.Text ;
}
}