Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC:如何将ActionResult转换为字符串?_Asp.net Mvc_String_Json_Actionresult_Actionmethod - Fatal编程技术网

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

Asp.net mvc ASP.NET MVC:如何将ActionResult转换为字符串?,asp.net-mvc,string,json,actionresult,actionmethod,Asp.net Mvc,String,Json,Actionresult,Actionmethod,我希望使用现有的action方法,将其返回值呈现为字符串,并将其作为JSON发送,以响应AJAX请求 为此,我需要将ActionResult呈现为字符串。我该怎么做 相反,我们可以使用this.Content()将字符串转换为ActionResult 更新 现有的和第一个action方法返回一个ActionResult类型,但它实际上返回一个ViewResult来响应HTTP post请求。我有一个第二个操作方法(我的facade),它返回一个响应AJAX请求的JsonResult。我希望这个第

我希望使用现有的action方法,将其返回值呈现为字符串,并将其作为JSON发送,以响应AJAX请求

为此,我需要将ActionResult呈现为字符串。我该怎么做

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

更新

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

在总体方案中,我希望ActionResult(由action方法生成)不仅可以通过标准HTTP post检索,还可以通过facade action方法(第二种action方法)通过AJAX请求检索。这样,作为开发人员,我可以选择使用HTTPPOST或AJAX来检索页面的呈现


抱歉,我尝试使此更新尽可能短。谢谢。

您是在找下面的4号还是6号

文本摘自:

了解行动结果

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

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

  • ViewResult-表示HTML和标记
  • EmptyResult-表示没有结果
  • RedirectResult-表示指向新URL的重定向
  • JsonResult—表示可以在AJAX应用程序中使用的JavaScript对象表示法结果
  • JavaScriptResult-表示一个JavaScript脚本
  • ContentResult-表示文本结果
  • FileContentResult—表示可下载的文件(包含二进制内容)
  • FilePathResult-表示可下载的文件(带有路径)
  • FileStreamResult-表示可下载的文件(带有文件流)

  • 所有这些操作结果都继承自基本ActionResult类

    将其作为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);
        }
    

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

    A
    JsonResult
    可能是更好的选择。我认为您可能是对的……我可以再看一看我的代码:-)当然
    ContentResult
    JsonResult
    是您想要的。现有的操作方法返回ActionResult,但它确实返回ViewResult。我无法为现有的操作方法返回JsonResult,但我将为将发布Json的操作方法使用JsonResult。有两种方法需要考虑。但是为什么AJAX请求需要整个页面呢?它会收到太多的信息,doctype、head、body等等。AJAX请求不是只需要一大块数据吗?您是否考虑过使用
    Request.IsAjaxRequest()
    让一个操作处理两种情况?#6是我想要的。谢谢+1.