我需要在asp.net webforms中将变量从内容页传递到母版页和用户控件。
MasterPage.aspx由下面的内容页使用。
Default.aspx
Aboutus.aspx
contactus.aspx如果我没有错,那么页面执行就会发生在
Content Page
Master Page
User Control由于这个原因,我想定义变量,让我们说page_id in default.aspx,About.aspx,contactus.aspx.
这样,我就可以在内容页上获得page_id本身的值,并在需要时将其传递给母版页和用户控件。
我不确定如何将变量page_id值传递给母版页中的另一个变量名称(也是page_id )。我需要这样做,因为我不允许对page_Id使用任何querystring或url路由值。
我需要传递变量,而不是来自任何text-box的值,这是可能的,或者我必须为此使用一个hidden-field

我需要传递值,如下图所示。
发布于 2014-02-06 12:07:50
我想你会想和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事件中可用。
可以在母版页上使用textbox /隐藏字段:
<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);
https://stackoverflow.com/questions/21601750
复制相似问题