无法将类型'System.Web.Mvc.RedirectToRouteResult'隐式转换为'System.Web.Mvc.JsonResult'

Din*_*esh 5 c# model-view-controller asp.net-mvc json asp.net-mvc-2

我如何从JsonResult重定向到ActionResult,但我得到错误.我的错误是"无法将类型'System.Web.Mvc.RedirectToRouteResult'隐式转换为'System.Web.Mvc.JsonResult'".我的守则

Json结果:

   public JsonResult AddTruckExpensesTransactionChild(string totaldays, string amount)
   {
        string Mess = objActive.Save();
        if (Mess == "1")
        {
            return RedirectToAction("GetTruckExpensesChild", new { id="", sid="" });
        }
        return Json(Mess, JsonRequestBehavior.AllowGet);
   }
Run Code Online (Sandbox Code Playgroud)

的ActionResult:

    public ActionResult GetTruckExpensesChild(string id, string sid)
    {
        TruckExpensesTransactionClass Transaction = new TruckExpensesTransactionClass();
        if (sid != null)
        {                
            Transaction.TransactionChild = objActive.ShowTransactionChild(id, sid);
            return View(Transaction);
        }
        else
        {                
            return View(Transaction);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ehs*_*jad 5

您需要使用基类ActionResult,以便可以返回ViewJSONContentPartial View

public ActionResult AddTruckExpensesTransactionChild(string totaldays, string amount)
   {
        string Mess = objActive.Save();
        if (Mess == "1")
              return Json(new { Url = Url.Action("GetTruckExpensesChild", new { id = "", sid = "" }) });

        return Json(Mess, JsonRequestBehavior.AllowGet);
   }
Run Code Online (Sandbox Code Playgroud)

但是,如果您通过ajax调用此操作,则必须通过javascript重定向到该操作,因为返回RedirectToAction将返回html以响应ajax而不是重定向。

因此,您需要通过带有某些标志的json返回操作网址,并检查响应是否具有该标志,请通过jquery重定向到该网址。

在Ajax调用成功中,检查其URL:

success: function(result) {
          if(result.Url.length > 0)
{
        window.location.href=result.Url;
}
Run Code Online (Sandbox Code Playgroud)