asp.net_动态创建页面跳转控件(HyperLink)

2023-10-19 15:20

本文主要是介绍asp.net_动态创建页面跳转控件(HyperLink),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天课堂上做了一个随堂练习,写个博客做记录。

动态创建页面跳转控件HyperLink

一、先来说一下页面跳转的几个方法:

1.a标签超链接
2.Response.Redirect重定向
3.Server.Transfer,也是重定向

2与3的区别(老师笔记)

Response.RedirectServer.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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240644

相关文章

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节