更新:我删除了所有的异步调用,并使其完全同步,但我仍然遇到这个问题,所以这不是异步的问题。
所以我的布局中有一个LoginLayout。它不是主布局文件。当用户登录时,我们在数据库中确定一些条件值,然后相应地将它们重定向到中间页面或直接重定向到我们的仪表板。
如果我们的用户首先被定向到中间页面,在这种情况下,他们单击一个提交按钮来发布到一个操作,那么一切都会按预期进行。但是如果我们不加载中间页面,而是重定向到调用相同登录函数的不同操作。他们应该直接转到仪表板,也就是不要返回视图,而是返回一个RedirectToAction
,同样的功能破坏了仪表板的布局。
实际上,我可以看到MVC正在渲染LoginLayout文件@RenderBody()
方法中的主_layout文件。而且URL不会变成/Dashboard,这也很奇怪。
同样值得注意的是,我已经尝试过RedirectToAction
,RedirectToRoute
,Redirect都做了完全相同的事情。此外,一旦加载乱码页面,如果我手动导航到/Dashboard,它将正确呈现。
以下是代码
//In my Login controller PostLogin method
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogonPost(LoginModel model)
{
//validate login and if all good then
return RedirectToAction("Index", "Intermediary");
}
//Intermediary Controller this one does not work if called page is loaded wierd as described
public async Task<ActionResult> Index()
{
await Task.Run(() =>
{
//grab database stuff in here set session vars etc
});
return await PostLogonConnecting();
}
当他们点击一个按钮时,这个被调用为页面中的帖子,并且工作正常
public async Task<ActionResult> PostCompany(CompaniesListModel model)
{
//do db stuff
return await PostLogonConnecting();
}
此PostLogonConnecting位于我的基类中,因此可以从多个控制器调用它。
public async Task<RedirectToActionResult> PostLogonConnecting()
{
await Task.Run(() =>
{
//do db stuff in here
});
return RedirectToAction("Index", "Dashboard");
}
发布于 2020-02-08 15:55:57
所以我发现这和AjaxHelper有关。(不是我添加的),所以我不确定它是如何工作的。关于这一点的一些谷歌搜索使我得到了这个答案。弄清楚这一点很痛苦,但至少它已经解决了!
https://stackoverflow.com/questions/60120321
复制相似问题