2017-06-27 4 views
1

私はstackoverflowとMicrosoft asp.netを使用してWebアプリケーションを開発するのが初めてです。私は開発ツールとしてMS Visual Studio Professional 2015を使用しています。asp.net:クラスコードファイルからラベルテキストを設定

私がしようとしているのは、学習目的で簡単なWebアプリケーションを作成することです。

  • のWebForm1.aspx
  • WebForm1.aspx.vb
  • Code.vb(Visual Studioの2015ソリューションエクスプローラでサブフォルダ "コード" のクラスファイル)

私:私は3つのファイルを持っていますすべてのSubsをCode.vbという中央クラスファイルに複数の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のクリック時のイベントがコードビハインド中央コードクラスファイルをインポート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 

私のaspxに私はボタンやラベルを持っていますこのクラスファイルでは、Sub SetLabelTextはLabel1のLabel-textを「some 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"はクラスタイプであり、式として使用することはできません

このようなことを行うことは可能でしょうか?私のコードは1つの中心的な場所に格納できるので、はるかに簡単です。事前に

Thxを、マルクス

+0

通常、ui要素へのアクセスはプライベートであるため、クラス(ここではWebForm1 )に保存されます。あなたのコードクラスでは、ラベルを設定するのに必要なテキストを返すメソッドを持つことができます。ラベルを設定したいだけなら、私はリソースファイルを持っているのを見ています。あなたは単なる例に問題がありますか? –

+0

あなたのヒントに感謝します。今問題を解決しました。 –

答えて

0

エラーメッセージは明確である:あなたは、フォームのWebForm1に外部からのLabel1にアクセスすることはできません。

私はあなたが関数にあなたのサブを変更し、テキストを返すことrecommand:

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

あなたのヒントに感謝します。今問題を解決しました。 –

関連する問題