ASP.NET 使用 BasePage 与 MasterPage 进行模板化
ASP.NET Templating with BasePage vs MasterPage
我必须处理一个 ASP.NET 项目,我必须在其中支持本地化和翻译。
colture 的更改可能只发生在 Page 对象的 InitializeCulture 方法中,而不发生在 MasterPage 上。
通常当我必须处理公共元素时 (header/footer),我将它们放在 MasterPage 中,但这样做会阻止我正确地本地化这些元素。
所以我很想了解如何使用将由所有其他页面派生的公共基页(一种母版页)来模板化页面。
我发现这篇文章清楚地解释了如何处理这种情况,但我认为有点过时了:
https://www.codeproject.com/Articles/2915/ASP-NET-Page-Templates-Using-Inheritance
所以我会问是否有更好的方法或技术来实现我的目标。
这里有一个简单的演示,说明如何将变量发送到母版页。在名为 Language
.
的 Master 中放一个 public 属性
public partial class Site1 : System.Web.UI.MasterPage
{
public string Language { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = $"My language is {Language}.";
}
}
然后在普通页面中为母版添加一个属性并将Page.Master
投射到母版页面的部分class(默认为Site1
)。
public partial class Default1 : System.Web.UI.Page
{
public Site1 master;
protected void Page_Load(object sender, EventArgs e)
{
master = (Site1)Page.Master;
}
然后您可以从主页访问 Language
中的母版。
master.Language = "nl-NL";
我必须处理一个 ASP.NET 项目,我必须在其中支持本地化和翻译。 colture 的更改可能只发生在 Page 对象的 InitializeCulture 方法中,而不发生在 MasterPage 上。
通常当我必须处理公共元素时 (header/footer),我将它们放在 MasterPage 中,但这样做会阻止我正确地本地化这些元素。 所以我很想了解如何使用将由所有其他页面派生的公共基页(一种母版页)来模板化页面。
我发现这篇文章清楚地解释了如何处理这种情况,但我认为有点过时了: https://www.codeproject.com/Articles/2915/ASP-NET-Page-Templates-Using-Inheritance
所以我会问是否有更好的方法或技术来实现我的目标。
这里有一个简单的演示,说明如何将变量发送到母版页。在名为 Language
.
public partial class Site1 : System.Web.UI.MasterPage
{
public string Language { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = $"My language is {Language}.";
}
}
然后在普通页面中为母版添加一个属性并将Page.Master
投射到母版页面的部分class(默认为Site1
)。
public partial class Default1 : System.Web.UI.Page
{
public Site1 master;
protected void Page_Load(object sender, EventArgs e)
{
master = (Site1)Page.Master;
}
然后您可以从主页访问 Language
中的母版。
master.Language = "nl-NL";