代码之家  ›  专栏  ›  技术社区  ›  Deverill

ASP.NET Newb-从单独的类访问控件

  •  0
  • Deverill  · 技术社区  · 14 年前

    对于新来的问题,我很抱歉,但我是一个经验丰富的老派程序员,但我对许多.NET方法都不熟悉,我想做得对。请原谅任何不好的术语,或要求我解释太多。

    我在VisualWebDeveloper2008学习版中使用VisualBasic作为语言创建了一个ASP.NET网站。它实际上是用现有ASP脚本的mods重写的,我正在努力咀嚼我咬下的东西。我在页面上创建了一个文本框(txtoutput),由于最终产品非常复杂,通常分离类似函数是一种良好的做法,所以我在app_code部分创建了4个单独的类。

    我的主页是sync.aspx,它有一个代码文件sync.aspx.vb。

    我的代码文件之一是syncdatabases.vb,在其中我创建了

    Public Class SyncDB  
    

    在这个类中,我创建了一些例程,例如

    Public Function ReadMSDB(ByVal SQLString as string) as Boolean
    

    在这个程序中,我想把信息放在我的文本框txtoutput的主窗体(默认的-窗体1)中。

    我的问题是如果我尝试:

    Form1.txtOutput.Text = "Hello world" 
    

    或者只是

    txtOutput.Text = "Hello world" 
    

    它表示未声明名称“form1”(或“txtoutput”)。我确信我遗漏了一些简单的东西,但不知道它是什么。我假设写命令在一个文件(类?)中。在文件之外(类?)包含页面本身,但我不知道如何正确地寻址。

    任何帮助都会得到感激,但请不要假设我对.NET有很高的基础知识,我是个老家伙,不喜欢这些新装备。谢谢!

    4 回复  |  直到 14 年前
        1
  •  1
  •   Matt    14 年前

    这个答案对于您试图完成的任务来说可能太简单了,但是您是否考虑过使用分部类而不是4个单独的类?分部类允许您将类似函数分隔成不同的文件,但允许您访问窗体上的控件。其他的答案也提供了很好的信息,但是就像.NET中的许多不同的东西一样,有更多的方法可以完成你想要做的事情。

        2
  •  1
  •   Brian Mains    14 年前

    是否尝试在readmsdb方法中引用txtoutput.text?如果是,则需要将其作为引用传递,如:

    Public Function ReadMSDB(ByVal txtOutput As TextBox, ByVal SQLString as string) as Boolean
    

    在网页后面的代码中,请执行以下操作:

    Dim o as new SyncDB
    o.ReadMSDB(txtOutput, "...")
    

    Hth.

        3
  •  1
  •   Joel Coehoorn    14 年前

    一般来说,在ASP.NET中,您希望页类能够驱动事物。它应该调用其他类中的方法,并将结果设置为控件。这意味着,与其返回布尔值,不如让readmsdb函数返回一个字符串。这个布尔值看起来是一个很好的异常候选者。

    不过,除此之外,我对任何接受名为“sqlstring”参数的方法都深表怀疑。这说明代码中很可能存在SQL注入漏洞,因为没有任何机制可以使用属性查询参数。您可能需要重新考虑如何进行整个数据访问层。我知道这听起来很重要,但您当前的代码似乎有一个非常严重的问题。我和其他人在整个堆栈中都有答案,其中有一些更好的模式示例。

        4
  •  0
  •   Artem Koshelev    14 年前

    除了以前的答案。

    这是很好的,因为您试图保持关注点的分离,但是您可能希望使用一个可用的模式更有意识地做到这一点。这可以帮助您理解ASP.NET体系结构并从头开始编写更清晰的代码。我不会碰ASP.NET MVC,你可以自己检查。

    第一种方法是使用模型视图演示者模式。下面是如何使用它的简要说明: http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx

    第二种方法是使用微软的 Web Client Software Factory . 这是一种更复杂的方法,主要用于大型企业应用程序。