我想知道如何从MVC视图中调用AJAX(或jquery或javascript或其他)中的POCO类(静态)C#实用程序方法。我想基于客户端用户输入(例如,单击jquery fullcalendar eventClick)从许多不同的视图中调用此实用程序方法,而不必将该实用程序与每个视图的控制器集成。最终目标是渲染一个颜色框模态对话框,或者至少将JQuery颜色框参数/语法发送回要在视图(客户端)中执行的视图。服务器端方法的目的是标准化对jquery颜色框对话框的调用。我原则上理解MVC控制器与特定视图的使用无关。那么,如何使用常用实用程序的操作方法设置控制器,以及如何从视图中设置对控制器的调用?视图调用将两个字符串参数(基于用户单击的事件)传递给服务器端实用程序方法:key,identifier。服务器端方法将基于密钥执行查找并传回包含视图中的JQuery函数将执行的颜色框调用的字符串值(或者它也可以是包含颜色框调用参数的名称/值对的对象)。
下面是服务器端实用程序类代码的示例(没有支持方法等)。提前谢谢。
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;
}
}
}
答案 0 :(得分:1)
ajax调用可以是任何控制器动作。它不必回调到首先为Page提供服务的View的控制器。
所以,在某些控制器上你有: -
[HttpGet]
public string CallColorbox(string key, string identifier, string colorboxCall)
{
return UI.Utility.Details.CallColorbox(key,identifier,colorboxCall);
}