2017-06-27 64 views
1

我是新來的使用Microsoft asp.net的stackoverflow和開發Web應用程序。我使用MS Visual Studio Professional 2015作爲開發工具。asp.net:從類代碼文件中設置標籤文本

我想要做的是創建一個簡單的Web應用程序的學習目的。我有三個文件:

  • WebForm1.aspx的
  • WebForm1.aspx.vb
  • Code.vb(在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設置爲「某些文本」。

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 =「一些文本」是紅色下劃線錯誤消息「WebApplication1.WebForm1.Label1」是「受保護」,並在這方面無法訪問「WebForm1」是一種類別,不能用作表達式

是否有可能做類似的事情?這對我來說會容易得多,因爲我的代碼可以存儲在一箇中心位置。

Thx提前,馬庫斯

+0

通常,訪問ui元素保留在類(這裏是WebForm1 ),因爲它們是私有的。在你的Code類中,你可以有一個方法返回你需要填充標籤的文本。如果你只是想填充標籤,我會看看有一個資源文件。你只是爲了例子而遇到麻煩嗎? –

+0

感謝您的提示。現在解決了這個問題。 –

回答

0

該錯誤信息是明確的:你不能從形式WebForm1的外部訪問的Label1。

我推薦您更改子的功能,並返回文本:

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 
+0

感謝您的提示。現在解決了這個問題。 –

0

不要。

要繼續這種方法,可以將您的邏輯與用戶界面緊密結合。這隻會讓事情變得更加困難。將頁面控制交互保留在頁面的代碼隱藏中,並使您的業務邏輯返回頁面上的值

因此,像:

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 

的想法是,「業務邏輯「僅僅運用於價值觀和常用的類。 「應用程序邏輯」與業務邏輯交互並將其連接到用戶界面。這使得兩個簡單和易於支持和維護,更容易添加功能,更便於其他系統等。

+0

感謝您的提示。現在解決了這個問題。 –

相關問題