我想使用 ActionFilter 以不同的格式(JavaScript/XML/JSON/HTML)返回 Controller 的模型(数据)。这是我目前所处的位置:
Action 过滤器:
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 };
}
}
及其实现:
[ResultFormat]
public ActionResult Entries(String format)
{
var dc = new Models.WeblogDataContext();
var entries = dc.WeblogEntries.Select(e => e);
return View(entries);
}
OnResultExecuting
方法被调用,但我没有得到返回的模型(数据)并将其格式化为 JSON 对象。我的 Controller 只呈现 View 。
更新:我正在遵循 Darin Dimitrov 对 this question 的回答的建议。 .
最佳答案
这就是我要找的:
public class ResultFormatAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext context)
{
context.Result = new JsonResult
{
Data = ((ViewResult)context.Result).ViewData.Model
};
}
}
关于c# - 在 Controller 中的 ActionResult 上使用 ActionFilter 返回 JsonResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662216/