将内容页面(aspx)中的int类型变量值传递给母版页和用户控件

时间:2014-02-06 11:32:20

标签: c# asp.net webforms

我需要将变量从内容页面传递到母版页面和asp.net webforms

中的用户控件

MasterPage.aspx被以下内容页面使用。

Default.aspx
Aboutus.aspx
contactus.aspx

如果我没有错,那么页面执行将以

发生
Content Page
Master Page
User Control

因此我想定义变量让我们在default.aspxAbout.aspxcontactus.aspx ...

中说出page_id

这样我就可以在内容页面上获取page_id本身的值,并在需要时将其传递给母版页和用户控件。

我不知道如何将变量page_id值传递给母版页中的另一个变量名{J} {}。我需要这样做,因为我不允许对page_Id使用任何查询字符串或url路由值

我需要传递变量而不是来自任何page_id的值,或者我必须使用text-box

enter image description here

我需要传递值,如下图所示。

1 个答案:

答案 0 :(得分:1)

我认为您希望使用properties - http://msdn.microsoft.com/en-us/library/aa720435(v=vs.71).aspx

编辑以反映更多信息

因此,如果用户控件具有:

public partial class _ascx1 : System.Web.UI.UserControl
{
    public int page_id { set; }

    protected void Page_Load(object sender, EventArgs e)
    {
       // The webcontrol does things here
       if(page_id > 0) { };
    }
}

public partial class _ascx2 : System.Web.UI.UserControl
{
    public int page_id { set; }

    protected void Page_Load(object sender, EventArgs e)
    {
       // The webcontrol does things here
       if(page_id > 0) { };
    }
}

母版页包含以下内容:

public partial class _MyMaster : System.Web.UI.MasterPage
{
    public int page_id { set; }

    protected void Page_Load(object sender, EventArgs e)
    {
       // My Master page stuff
       if(page_id > 0) {}; // DO stuff with page ID
    }

然后内容页面的内容如下:

protected void Page_Init(object sender, EventArgs e)
{
     ((_ascx1)Page.FindControl("ascx1_id")).page_id = 1;
     ((_ascx2)Page.FindControl("ascx2_id")).page_id = 1;

     ((_MyMaster)Page.Master).page_id = 1;
}

然后在webcontrol和母版页中,您应该能够访问page_id并按照自己的意愿行事。

通过在内容页面的Page_Init中设置ID,这意味着ID应该在Webcontrols和母版页的Page_Load事件中可用。

可以 使用母版页上的文本框/隐藏字段:

<asp:hiddenField id="hdnField" runat="server" value="0" />

然后在内容页面中设置:

((HiddenField)Page.Master.FindControl("hdnField")).value = "1";

并在母版页上访问它:     int page_id = hdnField.value

或Webcontrol:     int page_id = int.Parse(((HiddenField)Page.Master.FindControl(“hdnField”))。value);