2017-10-24 17 views
0

私は、C#で書かれたASPXアプリケーションの12個のページにある関数を持っています。私は既にApp_Codeでcsファイルを使用しているので、問題はありません。ここで頻繁に使用される関数をクラスに移動し、HTMLコードから呼び出す

は、HTMLでの呼び出しです:

protected string FormatImageUrl(string url) 
{ 
if (url != null && url.Length > 0) 
    return ("~/" + url); 
else return null; 
} 

(。偉大な発見は、私が追加される場合があります)

私は、このメソッドを移動したい:

<asp:Image ID="Image1" runat ="server" ImageUrl='<%# (string) FormatImageUrl((string) Eval("Image")) %>' /> 

、ここでは、メソッドです複数のページから1つのインスタンスをApp_Codeして参照します。

HTMLコード内にnamespace.function.methodを追加しようとしましたが、これはエラーをスローします。

また、このメソッドのDLLを使用してみましたが、私はまだ HTMLコードで正しく参照することはできません。

答えて

1

私はシンクタンクモードで数日間過ごしていましたが、最後に解決策が思い浮かびました。

私はImageFormatter.csという名前にApp_Codeのクラスファイルを作成し、それが次のようになります。

/// <summary> 
/// Summary description for ImageFormatter 
/// </summary> 
public class ImageFormatter 
{ 
    public ImageFormatter() 
    { 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    public static string FormatImageUrl(string url) 
    { 
    if (url != null && url.Length > 0) 
    return ("~/" + url); 
    else return null; 
} 
} 

注:私が名前空間definitioinを削除し、関連する{と}。

私は、私の理論をテストするために、アプリケーションの2ページでFormatImageUrl関数をコメントアウトしました。

HTMLコードを同じ2つのファイルで同じように変更しました。

クラスに機能を移動する必要があなたのそれらのためにそう
<asp:Image ID="Image1" runat ="server" ImageUrl='<%# (string) ImageFormatter.FormatImageUrl((string) Eval("Image")) %>' /> 

  • 適切な名前のクラスを作成
    • (私が実証されたように)クラス内であなたの関数を置きます
    • 名前空間を確認して削除する
  • oコードページ内の関数をコメントアウトする
  • クラス名を含めるようにHTMLコードを変更します。
関連する問題