Cannot implicitly convert type 'System.Web.Mvc.RedirectT

本文关键字:System Web Mvc RedirectT implicitly convert type Cannot | 更新日期: 2023-09-27 18:06:15

如何从JsonResult重定向到ActionResult,但我得到错误。我的错误是"不能隐式转换类型"System.Web.Mvc。重定向ttorouterresult '到'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);
   }

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);
        }
    }

Cannot implicitly convert type 'System.Web.Mvc.RedirectT

您需要使用基类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);
   }

但是如果你通过ajax调用这个动作,你必须通过javascript重定向到那个动作,因为返回RedirectToAction将返回html作为ajax的响应,而不是重定向。

所以你需要通过json返回带有一些标志的action url,并检查如果response有那个标志,通过jquery重定向到那个url。

在Ajax调用成功检查它的url:

success: function(result) {
          if(result.Url.length > 0)
{
        window.location.href=result.Url;
}

JsonResult类实现了ActionResult类。只需将JsonResult更改为ActionResult作为操作方法的返回类型:

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