【问题标题】:Updating a Literal Control Field twice (once in master, another in sub)更新文字控制字段两次(一次在主控,另一个在子控)
【发布时间】:2014-06-02 15:58:19
【问题描述】:

我正在使用旧的 CMS

标题标签 [title] 正在主文件中声明 而子page.aspx调用master输出所有header html

[header]

[pagecontenttemplate]

[footer]

棘手的部分是这个大师负责处理站点范围的标题标签 而页面内容模板只负责一些!

我要更改的是 pagecontent 模板中的 2 种类型的页面。 (我无法更改 sitemaster.cs 中已声明的标头) ** 否则其他特殊页面将没有标题标签文本。

所以鉴于这些,当我注释掉

newhead.Text = "my title tag text ";

在 sitemaster.cs 中,然后是

Literal newhead = (Literal)Master.FindControl("newhead");
newhead.Text = "NEW value title tag text";

开始在我的页面模板中工作 但是如果我的控件已经被声明,我不能改变这个值

我在这里遗漏了什么吗? 如何更新此值?

【问题讨论】:

  • 您尝试在主页中设置母版页中的属性对吗?
  • 我可能没有抓住重点,但我建议您对站点管理员的页眉和页脚部分使用用户控件,并为每个用户控件提供可以在页面加载时设置的公共属性。如果您希望能够根据您正在使用的页面模板呈现您的站点主控,您需要能够在运行时检测它是什么类型的页面,我不知道任何关于您的 CMS,但您可以这样做通过检测每个页面的布局类型。
  • @Derek 这是正确做法的孩子...但是 cms 太乱了,除非花更多时间在这上面,否则这甚至是不可能的。

标签: c# asp.net .net content-management-system


【解决方案1】:

原来问题是由于

[site.master] 已调用并输出 pageLoad 函数的值

因此,当 [pagetemplate] 尝试更新该字段时,它无法再更新。这就是为什么它会导致注释掉主代码会使页面模板代码工作,而不注释它会导致页面内容代码根本不更新。

所以我的解决方案将不得不只是将整个标题代码移动到每个特殊的 模板...

好像没有捷径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多