asp.net:从类代码文件

时间:2017-06-27 12:17:00

标签: asp.net vb.net

我是使用Microsoft asp.net开发stackoverflow和开发Web应用程序的新手。我使用MS Visual Studio Professional 2015作为开发工具。

我要做的是创建一个简单的Web应用程序用于学习目的。我有三个文件:

  • WebForm1.aspx的
  • WebForm1.aspx.vb
  • Code.vb(子文件夹中的类文件" Code"在Visual Studio 2015解决方案资源管理器中)

我的想法是将所有子函数存储在名为Code.vb的中心类文件中的多个aspx文件中。在我的aspx上,我有一个按钮和一个标签:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
<div>
    <asp:Button ID="Button1" runat="server" Text="Hello World" OnClick="Button1_Click" />
    <br />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>

Button1的OnClick事件从代码隐藏的WebForm1.aspx.vb调用Button1_Click,后者导入中央代码类文件:

Imports WebApplication1.CentralCode.Code

Public Class WebForm1
Inherits System.Web.UI.Page
Public Sub Button1_Click(sender As Object, e As EventArgs)
    SetLabelText()
End Sub
End Class

在此类文件中,Sub SetLabelText应将Label1的Label-text设置为&#34;某些文本&#34;。

Namespace CentralCode
Public Class Code
    Public Shared Sub SetLabelText()
        WebApplication1.WebForm1.Label1.Text = "some text"
    End Sub
End Class
End Namespace

WebApplication1.WebForm1.Label1.Text =&#34;某些文字&#34; 带有红色下划线,错误消息&#34; WebApplication1.WebForm1.Label1&#34;是&#34;受保护&#34;并且在此上下文中无法访问&#34; WebForm1&#34;是类类型,不能用作表达式

有可能做那样的事吗?这对我来说要容易得多,因为我的代码可以存储在一个中心位置。

提前谢谢马库斯

2 个答案:

答案 0 :(得分:0)

错误消息很明确:您无法从WebForm1表单外部访问Label1。

我建议您将sub更改为函数并返回文本:

Public Shared Function GetLabelText() as String
Return "Some Text"
End Function

在Webform1中

Public Sub Button1_Click(sender As Object, e As EventArgs)
    Label1.Text = GetLabelText()
End Sub

答案 1 :(得分:0)

唐&#39;吨

继续这种方法是将您的逻辑与您的用户界面紧密结合。这只会让事情变得更加困难。将页面控件交互保留在页面的代码隐藏中,并让您的业务逻辑返回页面上的值

类似于:

Public Shared Sub GetText()
    Return "some text"
End Sub

然后在您网页的代码隐藏中,您可以将标签设置为您正在获取的文字:

Public Sub Button1_Click(sender As Object, e As EventArgs)
    Label1.Text = Code.GetText()
End Sub

这个想法是&#34;业务逻辑&#34;只运用价值观和众所周知的类。 &#34;应用程序逻辑&#34;与业务逻辑交互并将其连接到用户界面。这使得两者更容易支持和维护,更容易添加功能,更便于其他系统等。