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

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件