返回视图(" viewname")不返回指定的视图

时间:2015-11-10 16:31:47

标签: c# asp.net-mvc

使用SPA模板如果用户尚未验证他们的电子邮件,我试图让Login POST方法返回VerifyEmail视图。

调试时,您可以看到return View("VerifyEmail")被调用,但是,我已经回到" /"并且未返回VerifyEmail视图。

我已经确认视图位于正确的文件夹中视图>帐户。

我应该寻找一些自动路由配置吗?为什么我的视图没有被退回?

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> LogOn(LogOnVM model, string returnUrl)
{
    if (!ModelState.IsValid)
        return View(model);

    switch (await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true))
    {
        case SignInStatus.Success:
            MyUser user = await UserManager.FindByNameAsync(model.UserName);
            if (!await UserManager.IsEmailConfirmedAsync(user.UserName))
                return View("VerifyEmail");
            else
                return RedirectToLocal(returnUrl);
        //other cases ignored for brevity
    }
}

我尝试添加此功能,但根本没有帮助:

public ActionResult VerifyEmail()
{
    return View();
}

我正在搜索并在我的代码中找到它,显然是因为默认模板:

public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
{
    if (context == null)
        throw new ArgumentNullException("context");

    if (context.ClientId == _publicClientId)
    {
        Uri expectedRootUri = new Uri(context.Request.Uri, "/");

        if (expectedRootUri.AbsoluteUri == context.RedirectUri)
        {
            context.Validated();
        }
        else if (context.ClientId == "web")
        {
            var expectedUri = new Uri(context.Request.Uri, "/");
            context.Validated(expectedUri.AbsoluteUri);
        }
    }
    return Task.FromResult<object>(null);
}

这可能导致问题吗?

1 个答案:

答案 0 :(得分:0)

在我上次编辑中评论代码不起作用,但我看到从/ account / logon中删除?ReturnUrl =%2F ?ReturnUrl =%2F可以解决问题。对于LogOn视图,ReturnUrl在routeValues下传递为@Html.BeginForm。我想我只是将null传递给了解决问题的routeValues