我是使用Microsoft asp.net开发stackoverflow和开发Web应用程序的新手。我使用MS Visual Studio Professional 2015作为开发工具。
我要做的是创建一个简单的Web应用程序用于学习目的。我有三个文件:
我的想法是将所有子函数存储在名为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;是类类型,不能用作表达式
有可能做那样的事吗?这对我来说要容易得多,因为我的代码可以存储在一个中心位置。
提前谢谢马库斯答案 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;与业务逻辑交互并将其连接到用户界面。这使得两者更容易支持和维护,更容易添加功能,更便于其他系统等。