Я хотел бы знать, как вызывать служебный метод C # класса POCO (статический) из AJAX (или jquery, javascript или чего-либо еще) из представления MVC. Я хочу вызывать этот метод утилиты из ряда различных представлений, основанных на пользовательских входах на стороне клиента (например, нажав jquery fullcalendar eventClick) без необходимости интегрировать утилиту с контроллером каждого представления. Конечной целью является визуализация модального диалогового окна colorbox или, по крайней мере, отправка параметров / синтаксиса JQuery colorbox обратно в представление, которое будет выполняться в представлении (на стороне клиента). Цель метода на стороне сервера - стандартизировать вызовы диалогов jquery colorbox. Я в принципе понимаю, что контроллеры MVC не привязаны к использованию из определенных представлений. Итак, как мне настроить контроллер с методами действий для общих утилит и как настроить вызов контроллера из представления? Вызов view передаст два строковых параметра (в зависимости от того, какое событие щелкает пользователь) в метод служебной программы на стороне сервера: ключ, идентификатор. Метод на стороне сервера выполнит поиск на основе ключа и передаст обратно строковое значение, содержащее вызов colorbox, который будет выполнять функция JQuery в представлении (или это также может быть объект, содержащий пары имя / значение для параметров вызова colorbox). ).
Ниже приведен пример кода класса утилит на стороне сервера (без поддержки методов и т. Д.). Заранее спасибо.
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;
}
}
}