Я хочу получить значение «значение» для actionresult. actionresult может быть contentresult, jsonresult или любой другой тип actionresult.Получить значение ActionResult в C# mvc 4
Мое настоящее понимание ActionResult заключается в том, что оно будет преобразовано в строку при отправке обратно клиенту.
например. Содержание («тест») = простая строка, которая содержит тест
JSon (объект) = строку, представляющую объект в формате JSon
EDIT: так что любой результат будет преобразован в строку - и я хочу получить эту строку, поэтому я могу манипулировать ею и возвращать это, манипулировать, значение.
Примечание: В настоящее время я пытаюсь написать «фреймворк», который автоматически шифрует и расшифровывает данные между клиентом и сервером, без необходимости использования этой структуры для работы с криптографическими материалами. Именно по этой причине мне нужно «значение» Actionresult, поэтому я могу зашифровать его, а затем отправить его клиенту!
Надеюсь, вы сможете понять мою проблему сейчас.
Мой текущий код выглядит следующим образом:
public ActionResult PerformChange(String action, String controller)
{
RedirectToRouteResult res = RedirectToAction(action, controller);
//how can i get the value of this RedirectToRouteResult? e.g. the string
Assembly cur = Assembly.GetExecutingAssembly();
List<Type> controllers = cur.GetTypes().Where(x => x.IsSubclassOf(typeof(Controller))).ToList();
List<Type> controllersWithCorrectName = controllers.Where(x => x.Name == controller).ToList<Type>();
if (controllersWithCorrectName.Count != 1)
{
//return error
return new EmptyResult();
}
Type targetController = controllersWithCorrectName.Single();
MethodInfo[] customMethods = targetController.GetMethods().Where(x => (x.ReturnType == typeof(ActionResult) || x.ReturnType.IsSubclassOf(typeof(ActionResult))) && x.IsPublic).ToArray<MethodInfo>();
List<MethodInfo> methods = customMethods.Where(x => x.Name == action).ToList<MethodInfo>();
if (methods.Count != 1)
{
//return error
return new EmptyResult();
}
MethodInfo targetMethodInfo = methods.Single();
Controller c = (Controller)Activator.CreateInstance(targetController);
ActionResult ar = (ActionResult)targetMethodInfo.Invoke(c, null);
//or how to get rhe value with this way???
//perform change to extracted value
return null; //return changed value
}
Не знаете, в чем ваш вопрос. Ваш образец показывает довольно простое отражение, чтобы вызвать метод и получить результат (который, вероятно, работает). Ваш вопрос «как проверить тип объекта?» Рассмотрите возможность замены образца, который у вас есть, с образцом того, что вы пытаетесь достичь/не работает (с объяснением, что/как оно не работает). –
Кажется, что вы должны использовать фильтры, но не другие действия –