【发布时间】:2017-02-10 09:58:36
【问题描述】:
我有一个动作,根据foo 的值,我想重定向到一个特定的动作:
public JsonResult FirstAction(string foo) // foo == "SecondAction"
{
return RedirectToAction(foo);
}
public JsonResult SecondAction() { }
这不起作用,因为RedirectToAction 不会返回JsonResult 并且无法转换(据我所知)。
我知道我可以在这里使用一些条件,即 foo 上的 switch 以确定要调用的方法,但我想尽可能保持隐含。
【问题讨论】:
-
将返回类型从
JsonResult更改为ActionResult,JsonResult和RedirectResult都继承自哪个?您并不总是从该方法返回 JSON,因此您使用的返回类型不适合。 -
嗯,我猜你正在为 AJAX 调用创建一个动作?如果是,那么“重定向”它的逻辑是什么?
-
使用
ActionResult代替JsonResult.. 无论如何,您都可以使用当前操作中的return Json(yourData, JsonRequestBehavior.AllowGet)或SecondAction返回 JSON 作为结果 -
@Kamo - 好问题,它是远程验证 - 我如何验证取决于
foo的值。 -
在您的情况下,我只需将此验证逻辑封装在方法/类/服务中,并摆脱使用重定向来处理您的操作中的调用。
标签: c# asp.net-mvc-5 jsonresult