0

ねえ、私はここにこのコードを持っています:

ScriptManager.RegisterClientScriptBlock(Me.Page, GetType(String), "showNotifier", ";$(function() {showNotifier(3000,'#cf5050','" & msg & "');});", True)

次のようにクラスファイル内に配置したいと考えています。

Public Class topMsgNotifyer
   Public Shared Sub show(ByVal delay As Integer, ByVal colorOfBox As String, ByVal message As String)
      Try
          ScriptManager.RegisterClientScriptBlock(Me.Page, GetType(String), "showNotifier", ";$(function() {showNotifier(" & delay & ",'" & colorOfBox & "','" & message & "');});", True)
      Catch ex As Exception
      End Try
   End Sub
End Class

そしてもちろん、クラスファイル内のMe.Pageに問題があります。

これを行うことで、現在のページ名を取得できます。

Dim pageName = Path.GetFileName(Request.Path)

ページ自体で呼び出すのではなく、asp.netページからそのクラスサブを呼び出すときにこれを修正するにはどうすればよいですか?

4

3 に答える 3

2

Page オブジェクトを show() メソッドに渡すこともできますが、より適切な方法は、ページが継承する BasePage クラスであるクラスを作成することです。そのクラスで、show() メソッドを作成します。したがって、この BasePage を継承するすべてのページがそのメソッドにアクセスでき、Me.Page が使用可能になります。

Page オブジェクトを渡す:

Public Class topMsgNotifyer
   Public Shared Sub show(ByVal delay As Integer, ByVal colorOfBox As String, ByVal message As String, ByVal page as System.Web.UI.Page)
      Try
          ScriptManager.RegisterClientScriptBlock(page, GetType(String), "showNotifier", ";$(function() {showNotifier(" & delay & ",'" & colorOfBox & "','" & message & "');});", True)
      Catch ex As Exception
      End Try
   End Sub
End Class

あれを呼べ:

topMsgNotifyer.show(30, "Red", "You did something wrong", Me.Page)
于 2012-08-17T17:05:21.917 に答える
1

これらの種類のことは、通常、ページにアクセスできるユーザー コントロールで行われます。

もう 1 つのオプションは、Page 変数をパラメーターとして関数に渡すことです。
または、関数がスクリプトで代わりに文字列を返すようにしてから、行っているように RegisterClientScriptBlock を呼び出します。

于 2012-08-17T17:20:12.967 に答える
1

ページのインスタンスを渡さないように人々が言うのはなぜですか? 私はこれに何の問題もないと思います:

public static void clientOnLoadScript(System.Web.UI.Page instance, string script, bool addScriptTag = false)
{ 
    string toWrite = "$(window).load(function () { \n" + script + "\n });";

    instance.ClientScript.RegisterStartupScript(instance.GetType(),"OnLoad", toWrite,addScriptTag);
}

次に、関数を呼び出します。

clientOnLoadScript(this,"script",true);

これは私にとってはうまくいきます。幸運を。

于 2012-08-17T17:41:55.717 に答える