在 ASP.NET 中的每个页面中来回传递参数的简单方法

A easy way to pass parameter back and forth in every page in ASP.NET

我想在每个页面来回传递一个id。我不能使用会话、应用程序变量和数据库,因为我希望它基于页面。如果存在表单或 url 串联是我能想到的隐藏字段。

有没有一种无需手动将其添加到 url 或每个页面的隐藏字段即可获取和发送此 ID 的简便方法?例如,使用主页或 url 重写方法。

您可以将请求url作为参数进行传输。 例子 在第 1 页中,您使用参数 Test

重定向到第 2 页
Response.Redirect("Page2.aspx?param1=Test");

在第 2 页中,您可以这样理解:

if (Request.QueryString["param1"] != null)
  var param1 = Request.QueryString["param1"];

在母版页中设置 public 字符串值

Public partial class MasterPage:System.Web.UI.MasterPage
{
    public string myValue
    {
        get{return "Master page string value" ;}
        set {}
    }
}

访问您子页面中的属性

protected void Page_Load(object sender, EventArgs e)
{
    MasterPage mp = (MasterPage) Page.Master;
    myLabel.text = mp.MyValue
}

一个想法:

在母版页中放置一个隐藏字段:

<asp:HiddenField runat="server" ID="hdCrossPageValue"/>

使用此扩展方法 get/set 每个页面的值:

public static class Util
{
    public static string GetCrossPageValue(this Page page)
    {
        if (page == null || page.Master == null) return null;
        var hf = page.Master.FindControl("hdCrossPageValue") as HiddenField;
        return hf == null ? null : hf.Value;
    }
    public static void SetCrossPageValue(this Page page, string value)
    {
        if (page == null || page.Master == null) return;
        var hf = page.Master.FindControl("hdCrossPageValue") as HiddenField;
        if (hf != null)
        {
            hf.Value = value;
        }
    }
}

像这样:

this.SetCrossPageValue("my cross page value");
var crossPageValue = this.GetCrossPageValue();