【问题标题】:master pages, form pages, form runat=server > all onclick methods on master page?母版页、表单页、表单 runat=server > 母版页上的所有 onclick 方法?
【发布时间】:2010-05-22 21:38:18
【问题描述】:

我的问题是我有多个嵌套母版页:

  • 1 级:全局(页眉、页脚、登录、导航等...)
  • 2 级:特定(搜索页面、帐户页面等)
  • 3 级:页面本身

现在,因为只有一个表单可以有runat=server,所以我将表单放在全局页面(这样我就可以处理登录、反馈等事情......)。

现在使用此解决方案,我还必须将例如级别 3(见上文)方法,例如搜索也放在级别 1 母版页上,但这会导致此页面很重(用于开发)来自所有地方的代码,即使是那些仅在单个页面上使用的代码(例如更改电子邮件表单)。

有没有办法将onclick 事件(例如:ChangeEMail)中的此类方法从级别 1(全局母版页)委托给级别 3(单个页面本身)。

更清楚: 我不想在后面的全局母版页代码上使用方法ChangeEMail,而是想以某种方式将它“移动”到唯一实际使用它的页面。它目前必须在全局 master 上的原因是 global master 有 form runat=server 并且每个 aspx 页面只能有一个。

这样可以更容易(更合乎逻辑)构建代码。

thnx(希望我解释正确)

已搜索但未找到任何有关处理此案例的一般信息,通常答案是:母版页上有所有方法,但我不喜欢它。所以将它移动到特定页面的任何方式都会很棒。 thnx

edit 也是同一件事的一部分... 另一方面 - 如何访问 textbox1.text 例如从母版页的内容页面上?有什么最佳做法吗?

【问题讨论】:

    标签: c# asp.net methods master-pages runatserver


    【解决方案1】:

    如果您将搜索按钮和文本框放在 .aspx 本身(级别 3)上,事件处理程序也将进入页面(或其代码隐藏)。表单标签是否在全局母版页(级别 1)上并不重要

    至于你的第二个问题:你可以使用

    var tb = this.FindControl("textbox1") as TextBox;
    

    【讨论】:

    • 签出#1。对于#2,没有可用的强类型?当有人更改名称时,这似乎是为空指针制作的?
    • 对于#1:我正在这样做:SignIn asp:LinkBut​​ton> 和代码: void AuthorizeUser(object sender, EventArgs e) { [...] } 但出现错误:CS1061: 'ASP.manage_signin_default_aspx' 不包含 'AuthorizeUser' 的定义并且没有扩展方法'可以找到接受“ASP.manage_signin_default_aspx”类型的第一个参数的 AuthorizeUser'(您是否缺少 using 指令或程序集引用?)
    • 这就是为什么我认为它在“3 级”页面上不起作用。不知道出了什么问题...
    • 啊,好的,必须公开该方法!然后就可以了。
    • 这也使得第二部分不再那么重要了。非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2015-06-28
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2014-02-02
    相关资源
    最近更新 更多