AI智能
改变未来

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

这里,通过假数据,手动创建的一个类,然后创建的一个集合,放入下拉框,选好值以后,点确定
会在另一个页面产生对应的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){//处理请求//获取请求urlHttpApplication 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的时候,要加一个文件夹的路径

<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存入的idthis.TextBox1.Text = $\"{Request.QueryString[\"deptid\"]}\";}}}}

效果图

选择一个后点击查询

地址栏和内容都进行了更改

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

您可能感兴趣的文章:

  • ASP.NET网站伪静态下使用中文URL的方法
  • asp.net C#检查URL是否有效的方法
  • Asp.net中Request.Url的各个属性对应的意义介绍
  • asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码
  • ASP.NET实现页面传值的几种方法小结
  • asp.net页面传值测试实例代码(前后台)
  • asp.net 页面传值的几个方法
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » ASP.NET通过更改Url进行页面传值的实现代码