从另一个控制器的JsonResult响应中获取价值

时间:2019-05-22 10:23:42

标签: c# asp.net asp.net-mvc controller

我需要从控制器到另一个控制器的jsonresult响应中获取值

public ActionResult ToDo(){
...
 return Json(new { result = "success" }, JsonRequestBehavior.AllowGet);
}

public ActionResult Caller(){
var response = ToDo;
if (response.Data.result == "success")
...
}

但是不要以这种方式工作

1 个答案:

答案 0 :(得分:1)

您可以在MVC中使用TempData将数据从一个控制器传递到另一个控制器。

在您的第一个控制器中,您可以做些什么。

public ActionResult ToDo(){
...
 var result=new { result = "success" };
 TempData["jsonData"]=result ;
 return Json(result, JsonRequestBehavior.AllowGet);
}

然后在您的第二个控制器中,您可以获得其值,如下所示:

public ActionResult Caller(){
var response = TempData["jsonData"];
System.Reflection.PropertyInfo finalresult =response.GetType().GetProperty("result");
string output = (string)(finalresult.GetValue(response, null));
if (output == "success")
...
}

但是请记住,TempData仅在第一次调用控制器时可用。如果您要重定向到其他控制器,则TempData的值会丢失。为此,您需要通过创建适当的模型并将其传递给ToDo控制器来进行模型绑定。