我需要将变量从内容页面传递到母版页面和asp.net webforms
MasterPage.aspx
被以下内容页面使用。
Default.aspx
Aboutus.aspx
contactus.aspx
如果我没有错,那么页面执行将以
发生Content Page
Master Page
User Control
因此我想定义变量让我们在default.aspx
,About.aspx
,contactus.aspx
...
这样我就可以在内容页面上获取page_id本身的值,并在需要时将其传递给母版页和用户控件。
我不知道如何将变量page_id
值传递给母版页中的另一个变量名{J} {}。我需要这样做,因为我不允许对page_Id使用任何查询字符串或url路由值
我需要传递变量而不是来自任何page_id
的值,或者我必须使用text-box
我需要传递值,如下图所示。
答案 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);