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;
}
}
}