【问题标题】:ASP.NET Templating with BasePage vs MasterPage使用 BasePage 与 MasterPage 的 ASP.NET 模板
【发布时间】:2021-08-24 16:37:55
【问题描述】:

我必须处理一个 ASP.NET 项目,在该项目中我必须支持本地化和翻译。 colture 的变化可能只发生在 Page 对象的 InitializeCulture 方法中,而不会发生在 MasterPage 上。

通常当我必须处理常见元素(页眉/页脚)时,我会将它们放在 MasterPage 中,但这样做会妨碍我正确本地化这些元素。 因此,我很想了解如何使用将由所有其他页面(一种 MasterPage)派生的通用基本页面来模板页面。

我发现这篇文章清楚地解释了如何处理这种情况,但我认为有点过时了: https://www.codeproject.com/Articles/2915/ASP-NET-Page-Templates-Using-Inheritance

所以我想问是否有更好的方法或技术来实现我的目标。

【问题讨论】:

  • 在包含它的普通页面之后加载母版页。所以你应该对本地化没问题。
  • @VDWWD 哦,天哪,我浪费了很多次尝试解决问题.. 并没有意识到这一点.. 明天我会再次尝试记住这一点。真的很感谢它是否有效,它让我明天很开心

标签: c# asp.net localization uiculture


【解决方案1】:

这里有一个简单的演示,说明如何将变量发送到母版页。在名为 Language 的 Master 中放置一个公共属性。

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}.";
    }
}

然后在普通页面中为 Master 添加一个属性并将Page.Master 转换为您的 Master Page 的部分类(默认为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";

【讨论】:

  • 今天我测试了您提出的一个位解决方案,并且运行良好。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多