ASP.NET MVC:如何将ActionResult转换为字符串?

时间:2011-01-03 15:30:43

标签: asp.net-mvc string json actionresult actionmethod

我想采用现有的操作方法,将其返回值呈现给字符串并将其作为JSON发送给AJAX请求的响应。

为此,我需要将ActionResult渲染为字符串。我该怎么做?

我们可以使用this.Content()将字符串转换为ActionResult。

更新

现有和第一个动作方法返回一个ActionResult类型,但它确实返回一个ViewResult来响应HTTP post请求。我有第二个动作方法(我的外观),它返回一个响应AJAX请求的JsonResult。我希望第二个动作方法使用第一个动作方法来呈现HTML。

在宏观方案中,我想要一个ActionResult(从一个动作方法生成),不仅可以通过标准的HTTP帖子检索,还可以通过Facade动作方法(第二个动作方法)通过AJAX请求检索。这样,作为开发人员,我可以选择使用HTTP Post或AJAX来检索页面的呈现。

抱歉,我试图让这个更新尽可能短。感谢。

3 个答案:

答案 0 :(得分:6)

你在寻找4号或6号下方吗?

here提取的文字:

了解行动结果

控制器操作返回称为操作结果的内容。操作结果是控制器操作响应浏览器请求而返回的内容。

ASP.NET MVC框架支持几种类型的操作结果,包括:

  1. ViewResult - 表示HTML和标记。
  2. EmptyResult - 表示无结果。
  3. RedirectResult - 表示重定向到新URL。
  4. JsonResult - 表示可在AJAX应用程序中使用的JavaScript Object Notation结果。
  5. JavaScriptResult - 表示JavaScript脚本。
  6. ContentResult - 表示文本结果。
  7. FileContentResult - 表示可下载的文件(包含二进制内容)。
  8. FilePathResult - 表示可下载的文件(带路径)。
  9. FileStreamResult - 表示可下载的文件(带有文件流)。
  10. 所有这些操作结果都继承自ActionResult基类。

答案 1 :(得分:1)

将其作为ContentResult而不是ActionResult

返回

我使用类似

的东西
    public ContentResult Place(string person, string seat)
    {
        string jsonString = null;
        try
        {

            jsonString = AllocationLogic.PerformAllocation(person, seat);
        }
        catch {
            jsonString = AllocationLogic.RaiseError(timeout);
        }
        return Content(jsonString);
    }

答案 2 :(得分:1)

您确定JsonResult不是您想要的吗?如果您调用Json(object jsonObject)中定义的Controller方法,它会将jsonObject序列化为JSON并返回适当的响应(正确设置所有标头以及所有标头)。通常JSON请求需要POST,但您可以将其配置为允许GET。