ASP.NET MVC结果返回助手

时间:2009-11-23 14:23:39

标签: asp.net-mvc json

我发现自己需要从控制器操作向客户端返回各种JSON结果。我已经创建了ContentResult类型的静态“帮助器”方法。我希望能够在多个项目中重用这些帮助器,所以我已经在他们自己的类中创建了它们,并且很快我将把它们移动到自己的程序集中。

这是我的问题:其中一些返回助手需要访问控制器上下文,因此我在Controller上创建了扩展方法。我喜欢Html Helper方法是HtmlHelper类的扩展方法,但我找不到类似于View类的Html属性的合适的控制器属性,所以我只是扩展控制器。 以下是返回助手的代码。我想知道是否有更好的方法来做到这一点。

    public static ContentResult AJAXRedirect(this Controller cont, string action,
        string controller, object routeValues)
    {
        string url = cont.Url.Action(action, controller, routeValues);
        string json = "{{\"redirect\": \"{0}\" }}";
        json = string.Format(json, url);
        return new ContentResult
        {
            Content = json,
            ContentType = "text/x-json",
            ContentEncoding = Encoding.UTF8
        };
    }

1 个答案:

答案 0 :(得分:2)

您可以使用此代码:

string url = cont.Url.Action(action, controller, routeValues);
return Json(new { redirect : url });

扩展控制器似乎是个好方法。 Content(),View(),Json(),Empty()方法也是Controller扩展。你正在添加自己的。

修改

对不起,我对扩展方法实际上是错误的。它们不是扩展方法。因此,如果您使用自己的基本Controller类和其他方法会更好。由于您将在类中使用这些方法,因此继承是最佳解决方案。你仍然可以在项目之间分享这个课程。