我的网站有管理员部分,我希望管理员能够添加新用户。 我也有一个单独的注册链接,它可以工作。
我想使用ajax
来更新我的管理部分。所以计划是:
AdminController
检查它是否有效,然后重定向到AuthenticationController
方法以创建用户AuthController
返回成功,则重新加载所有用户的列表当我调试代码时,我点击了Admin控制器,但是我无法进入AuthController
以查看它失败的原因。 (这一切都可以编译好)
我认为这与我的两个方法都是异步的事实有关,但是我不能等待从一个方法到另一个方法的重定向。
简单来说,代码是;
[Authorize(Roles = "AccessAllAreas")]
[HttpPost]
[ValidateAntiForgeryToken()]
public async Task<PartialViewResult> CreateNewUser(ApplicationUserViewModel avm)
{
if (ModelState.IsValid)
{
try
{
var foo = RedirectToAction("RegisterAsyncFromOtherController", "Account", avm);
....
}
[Authorize(Roles = "AccessAllAreas")]
[ValidateAntiForgeryToken()]
public async Task<ActionResult> RegisterAsyncFromOtherController(ApplicationUserViewModel model)
{
if (ModelState.IsValid)
{
....
}
}
以上if (Modelstate.IsValid)
的断点永远不会被击中。但是,断点然后单步调用RegisterAsyncFromOtherController()
会访问视图模型上的某个属性,然后返回CreateNewUser
。 (这让我怀疑异步无法正常工作)。
我在这里的概念是否有任何问题,以及导致我看到的调试行为的原因是什么?
答案 0 :(得分:0)
应该将RedirectToAction
返回给响应,以便访问者的浏览器可以重定向到给定的URL。只有在发生这种情况之后才会点击RegisterAsyncFromOtherController
行动。
答案 1 :(得分:0)
您似乎将RedirectToAction()
与Response.Redirect()
混为一谈。
RedirectToAction()
返回RedirectToRouteResult
(继承自ActionResult
),您必须将其返回给调用方才能使其生效。如果你不回复,RedirectToAction()
什么都做不了?