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

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

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

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