【问题标题】:Can you use partial classes to make two (equivalent) codebehind pages in VB您可以使用部分类在 VB 中制作两个(等效的)代码隐藏页面吗
【发布时间】:2012-06-18 16:48:55
【问题描述】:

我们使用 T4 来生成 .aspx 和 .vb 文件。一切正常 - 但我们经常需要自定义页面上的行为。

但是,我们有时也必须重新生成页面 - 这可能会破坏原本仍然有效的工作。

我想要这样的设置:

Default.aspx 'which would contain the controls
Default.aspx.vb 'which would bind, load and save data
Default.behaviour.vb '(or something like that) - which would store the behaviour

两个页面都可以引用控件。

这可能吗?

Stevedog:谢谢你,我怀疑我的错误在代码中会更明显 - 这是一个例子:

'##in codebehind Default.asp.vb:
'##there is a asp:label called lblTest
Partial Class pages_Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Me.IsPostBack Then
            writeMessage()
        End If
    End Sub

    Partial Private Sub writeMessage()
    End Sub
End Class

'##in codefile Default.behaviour.vb:
Partial Public Class pages_Default
    Inherits System.Web.UI.Page

    Private Sub writeMessage()
        lbltest.Text = "Hello"
    End Sub

End Class

【问题讨论】:

  • 这是一个网站还是一个网络应用程序?实际上可以声明两个代码隐藏文件吗?这样做有什么好处?
  • @AnthonyWJones 基本上 T4 生成我们网站的所有通用部分,绑定、加载和保存 - 但行为通常是特定于页面的 - 所以我们将其添加到代码隐藏中。我们有时需要在快速原型制作期间重新生成 T4 - 可能会消除定制化。如果它是孤立和安全的,那就太好了。

标签: asp.net vb.net code-behind partial-classes


【解决方案1】:

是的,你可以为同一个类创建任意多个部分类,你给出的例子正是它们的主要目的。部分类中的代码可以访问类其余部分中的所有内容,就好像它们都在同一个文件中的同一个类声明中一样。我对 ASP 或 T4 不是很熟悉,但我无法想象为什么其中任何一个会改变部分类的工作方式。

【讨论】:

  • 我很高兴听到这个消息。你介意看看上面的代码,告诉我我的方式的错误吗?
  • 在 behavior.vb 页面中,它往往会抱怨标签未声明。我尝试将 Protected/Dim lblTest 创建为标签。我正在寻找想法。如果我将 Sub 设为部分,它会抱怨“部分方法必须有空方法体”。
  • 嗯。我不知道。可能是 ASP 的问题。这在其他类型的项目中当然是允许的。就像我说的,不幸的是,我对 ASP 了解不多。我找到了这个链接:4guysfromrolla.com/articles/071509-1.aspx 但它只是在使用部分类的意义上谈论 ASP,而不是在添加你自己的意义上。
  • 我看过那篇文章——我似乎无法调整它来处理两个文件。如果没有 IDE 支持,我不介意,但这种范例似乎不支持它。除非有人可以帮助我。非常感谢您的帮助!
  • 只是一个更新,我似乎能够让部分类在某些类型的项目上工作,关键是我做 Web 开发,所以这是我使用的两种类型的应用程序:maordavid.blogspot.co.uk/2007/06/… 似乎在“网站”上工作,而不是在“应用程序”上工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2017-12-24
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
相关资源
最近更新 更多