Chcę zwrócić model (dane) kontrolera w różnych formatach (JavaScript/XML/JSON/HTML) przy użyciu ActionFilter. Oto gdzie jestem na tak daleko:Powrót JsonResult przy użyciu ActionFilter w ActionResult w kontrolerze
ActionFilter:
public class ResultFormatAttribute : ActionFilterAttribute, IResultFilter
{
void IResultFilter.OnResultExecuting(ResultExecutingContext context)
{
var viewResult = context.Result as ViewResult;
if (viewResult == null) return;
context.Result = new JsonResult { Data = viewResult.ViewData.Model };
}
}
i wdrażanie To:
[ResultFormat]
public ActionResult Entries(String format)
{
var dc = new Models.WeblogDataContext();
var entries = dc.WeblogEntries.Select(e => e);
return View(entries);
}
Sposób OnResultExecuting
jest wywoływana, ale nie otrzymuję modelu (dane) zwrócone i sformatowane jako obiekt JSON. Mój kontroler renderuje widok.
Aktualizacja: Podążam za sugestią odpowiedzi Darina Dimitrowa na this question.
IResultFilter.OnResultExecuting zwraca pustkę. A klasa Json nie jest dostępna w tym kontekście. – roosteronacid