这个问题可能是因为重定向跨域导致的,我们可以分别在HttpGet方法和HttpPost方法上添加AllowCrossSiteJsonAttribute属性,以允许跨域请求,并确保在HttpPost方法中使用RedirectToAction时传递正确的控制器和操作方法参数。
示例代码:
[AllowCrossSiteJson] public ActionResult Index() { return View(); }
[HttpPost] [AllowCrossSiteJson] public ActionResult Index(string username, string password) { if (username == "admin" && password == "123") { return RedirectToAction("Dashboard", "Admin"); } else { return RedirectToAction("Index"); } }
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.RequestContext.HttpContext.Request.HttpMethod == "OPTIONS") { filterContext.RequestContext.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", ""); filterContext.RequestContext.HttpContext.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST"); filterContext.RequestContext.HttpContext.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept"); filterContext.Result = new EmptyResult(); } else { filterContext.RequestContext.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", ""); }
base.OnActionExecuted(filterContext);
}
}