【发布时间】:2013-11-05 17:33:20
【问题描述】:
我正在将登录信息从 jQuery AJAX 调用发送到 MVC 4 控制器:
$.post(url, data, function (response) {
if (response=='InvalidLogin') {
//show invalid login
}
else if (response == 'Error') {
//show error
}
else {
//redirecting to main page from here for the time being.
window.location.replace("http://localhost:1378/Dashboard/Index");
}
});
如果登录成功,我想根据用户类型将用户从服务器端重定向到适当的页面。如果登录失败,则返回一个字符串给用户:
[HttpPost]
public ActionResult Index(LoginModel loginData)
{
if (login fails)
{
return Json("InvalidLogin", JsonRequestBehavior.AllowGet);
}
else
{
// I want to redirect to another controller, view, or action depending
// on user type.
}
}
但是有问题:
如果此方法返回“ActionResult”,则我收到错误
not all code paths return a value。如果我使用 'void',我不能返回任何东西。
即使我使用没有返回的“void”,由于 jQuery AJAX 调用的异步特性,我也无法重定向到其他控制器或视图。
有什么技术可以处理这种情况吗?
【问题讨论】:
-
您是否考虑过尝试在 ActionResult 的 else 中返回一些东西?
-
在您的
else中返回“成功”。 -
@Jasen,你没有仔细阅读问题。
-
怎么样?从您的控制器返回一些内容并在 javascript 中捕获响应解决了问题 1 和 2。您接受的答案本质上是相同的。
-
@Jasen,如果您有比接受的答案更好的东西,请告诉我们。
标签: jquery ajax asp.net-mvc-4