2012-01-23 6 views
0

MVCビューからAJAX(またはjqueryまたはjavascriptなど)からPOCOクラス(静的)C#ユーティリティメソッドを呼び出す方法を知りたいと思います。このユーティリティメソッドを、各ビューのコントローラにユーティリティを統合することなく、クライアントサイドのユーザー入力に基づいてさまざまなビューから呼び出す(たとえば、jquery fullcalendar eventClickをクリックする)必要があります。最終的な目標は、カラーボックスモーダルダイアログをレンダリングするか、少なくともビュー(クライアント側)で実行されるビューにJQueryカラーボックスパラメータ/構文を返すことです。サーバー側メソッドの目的は、jquery colorboxダイアログへの呼び出しを標準化することです。私は、MVCコントローラは特定のビューからの使用に結びついていないことを原則として理解しています。だから、どのように私は一般的なユーティリティのアクションメソッドでコントローラを設定し、ビューからコントローラへの呼び出しを設定するのですか?ビュー呼び出しは、サーバー側のユーティリティメソッド(キー、識別子)に2つの文字列パラメータ(ユーザーがクリックしたイベントに基づいて)を渡します。サーバー側のメソッドは、キーに基づいてルックアップを実行し、ビュー内のJQuery関数が実行するcolorbox呼び出しを含む文字列値を渡します(または、colorbox呼び出しパラメーターの名前と値のペアを含むオブジェクト)。複数のビューからC#ユーティリティメソッドへのMVCクライアント側の呼び出し

以下は、サーバー側のユーティリティクラスコードの例です(サポート方法などはありません)。前もって感謝します。

namespace UI.Utility.Details 
{ 
    public static class Details 
    { 

     [WebMethod] 
     public static string CallColorbox(string key, string identifier, string colorboxCall) 
     { 
      if (string.IsNullOrEmpty(key)) 
       throw new Exception("Error: No key supplied."); 

      if (string.IsNullOrEmpty(identifier)) 
       throw new Exception("Error: No identifier supplied."); 

      DetailSettings settings = GetSettings(key, identifier); 

      if (settings == null) 
       throw new Exception(string.Format("Error: Settings not found for key [{0}].", key)); 

      colorboxCall = null; 
      if (settings != null) 
      { 
       //$.colorbox({iframe:true, innerWidth:500, innerHeight:350, href:newUrl, opacity:0.35, scrolling:false }); 
       colorboxCall = 
        string.Format(
        //"$.colorbox({ iframe:{0}, innerWidth:{1}, innerHeight:{2}, {3}:{4}, opacity:{5}, scrolling:{6} });", 
         "{0} iframe:{1}, innerWidth:{2}, innerHeight:{3}, {4}:{5}, opacity:{6}, scrolling:{7} {8}", 
         "{", 
         settings.iframe, 
         settings.innerWidth, 
         settings.innerHeight, 
         settings.identifierType, 
         settings.identifier, 
         settings.opacity, 
         settings.scrolling, 
         "}" 
        ); 
      } 
      if (string.IsNullOrEmpty(colorboxCall)) 
       throw new Exception(string.Format("Error: colorbox call not constructed for key [{0}].", key)); 

      return colorboxCall; 
     } 
    } 

} 

答えて

1

ajaxコールは、任意のコントローラアクションにコールできます。最初にページを提供したビューのコントローラにコールバックする必要はありません。

ので、いくつかのコントローラ上で、あなたは持っている: -

[HttpGet] 
public string CallColorbox(string key, string identifier, string colorboxCall) 
{ 
    return UI.Utility.Details.CallColorbox(key,identifier,colorboxCall); 
} 
関連する問題