如何在母版页上声明的内容页面代码上重新定义变量?

时间:2014-07-30 22:10:28

标签: c# asp.net html5 visual-studio-2010 code-behind

我正在使用VS2010和ASP.NET 4构建Web应用程序

我已经设法在嵌套母版页中声明和定义变量,并在母版页中调用它。但是,如何从内容页面的代码隐藏更改该变量的值?

以下是DeckNav.master.cs的变量声明(嵌套母版页代码隐藏):

public partial class DeckNav : System.Web.UI.MasterPage
{

    protected void Page_Load(object sender, EventArgs e)
    {
        this.mfrName = "(BRAND)";
        this.modelName = "(MODEL)";
    }

    public string mfrName { get; set; }
    public string modelName { get; set; }
}

这就是我在母版页(DeckNav.master)中调用2个变量(默认值)的方法:

<asp:ContentPlaceHolder ID="brandAndModel" runat="server">
<h1 class="page-header"> <%= mfrName %> <%= modelName %>
</h1>
</asp:ContentPlaceHolder>

在从DeckNav.master继承的内容页面中,我需要知道如何从代码隐藏中为每个ASPX内容页面相应地更改变量的值。

示例:

public partial class DeckRepair : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        mfrName = "Brand 10";
        modelName = "Model 12";          
    }

}

上面的代码段不起作用。 Visual Studio提醒我“当前上下文中不存在该名称”。


编辑:

我在主页的代码隐藏中将变量声明为静态:

public partial class LeftNav : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public static string camMfr { get; set; }
    public static string camModel { get; set; }
}

...并在内容页面的代码隐藏上分配值:

public partial class BrandModel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        LeftNav.camMfr = "BRAND 11";
        LeftNav.camModel = "MODEL 11";
    }
}

我仍然遇到同样的问题。它成功地将变量首次分配给“BRAND 11”,但是当我为camMfr和camModel加载另一个具有其自己唯一值的内容页面(即“BRAND 22”,“MODEL 22”)时,它保留原始分配值(“品牌11“)。请记住,我没有在母版页中指定一个值,只是声明它。

1 个答案:

答案 0 :(得分:0)

尝试

DeckNav.mfrName = "Brand 10";
DeckNav.modelName = "Model 12";