ASP.NET URL変更によるページ受け渡し
2022-02-20 03:25:12
Here, a class is created manually by dummy data, then a collection is created, put in the dropdown box, select the value and click OK
The corresponding id will be generated in another page, feel free to comment if you don't understand
<イグ
クラスを作成します。
using System;
Generic;
Linq;
Web;
namespace WebApplication1
WebApplication1 {
public class Dept
{
public int Id { get; set; }
public string DeptName { get; set; }
}
}
選択されたウェブフォーム
<%@ 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">Query</a></p>
</form>
</body>
</html>
選択されたウェブフォームのバックエンドコード
using System;
Generic;
Linq;
Web;
UI;
WebControls;
WebControls; namespace WebApplication1
WebControls; namespace WebApplication1 {
public partial class Dept1 : System.Web.UI.
UI.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadDeptData();
}
}
private void LoadDeptData()
{
//create the data manually
List<Dept> depts = new List<Dept>
{
new Dept{Id=1,DeptName="Xiaoming"},
new Dept{Id=2,DeptName="XiaoWang"},
new Dept{Id=3,DeptName="小李"}
};
this.DropDownList1.DataSource = depts;
// the default value displayed
this.DropDownList1.DataTextField = "DeptName";
This.DropDownList1.DataValueField = "Id";
//Save
this.DropDownList1.DataBind();
}
}
}
Modules クラスを継承したクラスを構築する
using System;
Generic;
Generic; using System;
Text.RegularExpressions;
Web;
Web; namespace WebApplication1.
WebApplication1.Modules {
public class DeptModule : IHttpModule
IHttpModule {
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += Context_BeginRequest;
}
private void Context_BeginRequest(object sender, EventArgs e)
{
//process the request
//get the request url
HttpApplication application = sender as HttpApplication;
//relative path
string url = application.Request.RawUrl;
//a regular, used to match if it is a relative page
Regex regex = new Regex(@"dept_(\d+).html");
// regular after the match, Microsoft gives the paved way, regular after the match an array.
GroupCollection groupCollection = regex.Match(url).Groups;
// here to get is the first value of the array, to see if it is a successful match
if (groupCollection[0].Success)
{
//get the second value
var id = groupCollection[1].Value.Trim('_');
//store the id, and when you use it, go directly to the second page to get the value
HttpContext.Current.RewritePath("~/DeptDetail.aspx","","","deptid="+id);
}
}
}
}
クラスをビルドした後、設定ファイルに入って設定する必要があります
ここではフォルダの下に置いているので、設定ファイルではフォルダのパスを追加して型を指定しています
<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>
表示されたウェブフォームのバックエンドコード
using System;
Generic;
Linq;
Web;
UI;
WebControls;
WebControls; namespace WebApplication1
WebControls; namespace WebApplication1 {
public partial class DeptDetail : System.Web.UI.
UI.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//get the id deposited by the Module directly via request
this.TextBox1.Text = $"{Request.QueryString["deptid"]}";
}
}
}
}
レンダリング
選択し、クエリーをクリック
アドレスバーとコンテンツが変更されました
関連
-
C# string.format でのエラー: 入力文字列が正しい形式でない
-
C# indexof() の使用法
-
C#でUSBデバイスを操作する方法
-
Unityがエラーを報告します。コレクションが変更されました。列挙操作が実行されない可能性があります。
-
VS エラー LNK2005:**already defined in **.obj
-
インデックスが配列の範囲外であった。
-
System.InvalidOperationException: ConnectionString プロパティが初期化されていません。
-
エラーです。名前 'Encoding' は現在のコンテキストに存在しない ソリューション
-
C# データベース操作エラー。この接続に関連付けられた開いているDataReaderがすでにあり、これを閉じる必要があります...
-
GDI+でジェネリックエラーが発生しました@System.Drawing.Image.RotateFlip
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
c# - デシリアライズ・エラー。入力文字列が正しい形式でない
-
C#の遅延関数の使用
-
C#高精度遅延コード実行時間(us/ns)
-
エラーです。コレクションが変更されました。列挙操作が実行されない可能性があります。
-
HTTP エラー 500.22 - 内部サーバー エラー-IIS7 Asp.net2.0 ウェブサイトの実行ソリューションに失敗しました。
-
不正なフォーマットでプログラムを読み込もうとした場合の問題を解決します。
-
このリソースにアクセスするには完全な認証が必要です Unauthorized
-
vs2010 can't debug, can't enter breakpoint, breakpoint is invalid.
-
C#のビルドコードで、すべてのコードパスが値を返さないエラーが発生する
-
C#の構文]をご覧ください。C#のリフレクション(アセンブリ)機構を説明する