c# - 在 Controller 中的 ActionResult 上使用 ActionFilter 返回 JsonResult

标签 c# asp.net-mvc

我想使用 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/

相关文章:

c# - 如何使我的自定义数据注释起作用(它在列表中,列表中的每个项目都会覆盖最后的验证测试)

c# - webconfig中的属性maxRequestLength是怎么测的

c# - 自定义 DataGridViewCheckBoxCell 视觉更新在编辑模式下不起作用

c# - 如何将音频波形绘制到位图

c# - Controller 可以将接口(interface)实例作为参数吗? ASP.NET MVC

asp.net-mvc - 从 MVC 登录 Azure AD : Response status code does not indicate success: 404 (Not Found)

javascript - 在服务器端提交消息后关闭模态弹出窗口

c# - C# 类型系统是否可靠且可判定?

c# - 提交时索引超出范围(Fluent NHibernate)

asp.net-mvc - 如何在 MVC 5 中的表单帖子上显示请等待消息,直到 Controller 返回 View