咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 305|回复: 0

[ASP.NET] ASP.NET通过更改Url进行页面传值的实现代码

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-7-1 11:22:41 | 显示全部楼层 |阅读模式
    这里,通过假数据,手动创建的一个类,然后创建的一个集合,放入下拉框,选好值以后,点确定
    会在另一个页面产生对应的id
    创建一个类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace WebApplication1
    {
    public class Dept
    {
      public int Id { get; set; }
      public string DeptName { get; set; }
    }
    } 一个选择的web窗体

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Dept.aspx.cs" Inherits="WebApplication1.Dept1" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
      <div>
       <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">

       </asp:DropDownList>
      </div>
      <p>><a href="dept_<%=DropDownList1.SelectedValue %>.html" rel="external nofollow" >查询</a></p>
    </form>
    </body>
    </html> 选择的web窗体的后台代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace WebApplication1
    {
    public partial class Dept1 : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       if (!IsPostBack)
       {
        LoadDeptData();
       }
      }

      private void LoadDeptData()
      {
       //手动创建数据
       List<Dept> depts = new List<Dept>
       {
        new Dept{Id=1,DeptName="小明"},
        new Dept{Id=2,DeptName="小王"},
        new Dept{Id=3,DeptName="小李"}
       };
       this.DropDownList1.DataSource = depts;
       //默认显示的值
       this.DropDownList1.DataTextField = "DeptName";
       this.DropDownList1.DataValueField = "Id";
       //保存
       this.DropDownList1.DataBind();
      }
    }
    } 建一个继承Modules类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    using System.Web;

    namespace WebApplication1.Modules
    {
    public class DeptModule : IHttpModule
    {
      public void Dispose()
      {

      }

      public void Init(HttpApplication context)
      {
       context.BeginRequest += Context_BeginRequest;  
      }

      private void Context_BeginRequest(object sender, EventArgs e)
      {
       //处理请求
       //获取请求url
       HttpApplication application = sender as HttpApplication;
       //相对路径
       string url = application.Request.RawUrl;
       //一个正则,用来匹配是不是相对应的页面
       Regex regex = new Regex(@"dept_(\d+).html");
       //正则的匹配后的,微软给铺好的路,正则匹配后的一个数组;
       GroupCollection groupCollection = regex.Match(url).Groups;
       //这里取得是数组的第一个值,看看是不是成功匹配了,
       if (groupCollection[0].Success)
       {
        //取到第二个值
        var id = groupCollection[1].Value.Trim('_');
        //存储id,等用到的时候直接去第二个页面去取值
        HttpContext.Current.RewritePath("~/DeptDetail.aspx","","deptid="+id);

       }
      }
    }
    } 建完了类,要进入配置文件进行配置
    因为我这里是放在一个文件夹下面了,所以配置文件指定type的时候,要加一个文件夹的路径
    ASP.NET通过更改Url进行页面传值的实现代码-1.jpg


    <system.webServer>
    <modules>
      <add name="Module" type="WebApplication1.Modules.DeptModule"/>
    </modules>
    </system.webServer> 显示的web窗体

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DeptDetail.aspx.cs" Inherits="WebApplication1.DeptDetail" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
      <div>
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </div>
    </form>
    </body>
    </html> 显示的web窗体的后台代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace WebApplication1
    {
    public partial class DeptDetail : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
       if (!IsPostBack)
       {
        //直接通过request获取Module存入的id
        this.TextBox1.Text = $"{Request.QueryString["deptid"]}";
       }
      }
    }
    } 效果图
    选择一个后点击查询
    ASP.NET通过更改Url进行页面传值的实现代码-2.jpg

    地址栏和内容都进行了更改
    ASP.NET通过更改Url进行页面传值的实现代码-3.png

    到此这篇关于ASP.NET通过更改Url进行页面传值的文章就介绍到这了,更多相关asp.net url 页面传值内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/185804.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 21:08

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表