本文主要是介绍asp.net_动态创建页面跳转控件(HyperLink),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天课堂上做了一个随堂练习,写个博客做记录。
动态创建页面跳转控件HyperLink
一、先来说一下页面跳转的几个方法:
1.a标签超链接
2.Response.Redirect重定向
3.Server.Transfer,也是重定向
2与3的区别(老师笔记)
Response.Redirect | Server.Transfer | |
---|---|---|
是否转向其他站点 | 是 | 否 |
是否可带QueryString参数 | 是 | 否 |
执行效率 | 相对低 | 相对高 |
是否存在第三方控件的冲突BUG | 无 | 有 |
浏览器是否显示目标地址 | 是 | 否 |
特别注意:
1.Server.Transfer方法只能是本站内的URL跳转,不能跳转到其他的网站
2.Server.Transfer方法存在一些已知的和第三方控件的冲突
3.Server.Transfer隐藏目标地址(目标网页也就无法获取正确的来路)
二、在文本框输入网址名与网址并创建控件,点击控件实现页面跳转。(随堂练习)
由图可知,输入名称与网址,点击创建按钮,可以生成一个超链接用来实现页面跳转(第三个文本框起测试作用,下文会说到)。
大体的题目效果就是这样,现在来看代码:
前端:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test01.aspx.cs" Inherits="test01" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><div>名称:<asp:TextBox ID="TextBox1" runat="server" Width="178px"></asp:TextBox><br /><br />网址:<asp:TextBox ID="TextBox2" runat="server" Width="177px"></asp:TextBox><br /><br /><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="创建" /><br /><br /><asp:TextBox ID="TextBox3" runat="server" Width="182px"></asp:TextBox><br /><br /><asp:Panel ID="Panel1" runat="server"></asp:Panel></div></form>
</body>
</html>
后端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class test01 : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){//保留上一个创建的控件if (TextBox3.Text != ""){string[] str = TextBox3.Text.Split('$');foreach (string s in str){if (s.Length > 0){addlink(s);}}}}protected void addlink(string nameurl){string[] str = nameurl.Replace("$", "").Split('#'); //去除$与#HyperLink hl = new HyperLink();hl.Text = str[0]; // str[0]代表 #左边hl.NavigateUrl = str[1]; // #右边Panel1.Controls.Add(hl);}protected void Button1_Click(object sender, EventArgs e){if (TextBox1.Text != "" && TextBox2.Text != ""){string str = TextBox1.Text + "#" + TextBox2.Text + "$";addlink(str);TextBox3.Text += str;}TextBox1.Text = TextBox2.Text = ""; //清空文本框}
}
基本思路:
点击按钮之后,触发事件,当两个文本框里的值不为空时,定义一个字符串,把名称与网址封装成这样:
百度#https://www.baidu.com$ // #与$为分隔符
然后写一个添加超链接控件的方法addlink(),接收封装后的字符串,对它进行拆分,用一个一维数组接收:
string[] str = nameurl.Replace(“$”, “”).Split(‘#’);
nameurl为方法参数名,不用过多在意,到这步之后,原本封装好的字符串就变成了:
百度 //第一个字符串
https://www.baidu.com //第二个字符串
随后创建HyperLink对象,设置Text的值为第一个字符串(str[0]),设置NavigateUrl的值为第二个字符串(str[1]),最后把这个对象添加到Panel控件里,就实现了创建超链接。
TextBox3文本框(即第三行文本框)的作用是测试字符串有没有分隔成功并可视化,可以把它设置成不可见。还有一个功能,下面会讲到。
<asp:TextBox ID="TextBox3" runat="server" Width="182px" Visible="false"></asp:TextBox>
PageLoad方法里的那段代码,作用是把创建过的超链接保留下来,因为每次点击按钮触发事件的时候,页面会重新加载,原本创建的超链接会消失
具体怎么保留呢?
这里就讲到了TextBox3的另一个作用,保留上一个超链接的封装字符串
假设我们已经创建了一个百度超链接,要创建第二个淘宝的超链接,名称与网址都填写好了,点击创建按钮,程序执行顺序:先执行PageLoad方法,再执行Button_Click方法,此时,PageLoad里的方法把TextBox3里的文本内容提取出来,做类似的拆分操作,并添加到Panel控件,这样,上一个创建的超链接就不会消失,会再创建一遍。
至于为什么先执行PageLoad,可以参考我之前的博客:
asp.net_PageLoad加载页面简单理解与应用
这篇关于asp.net_动态创建页面跳转控件(HyperLink)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!