为什么上一页链接出现在MVC3 Razor应用程序的地址栏中?

时间:2012-03-16 20:31:46

标签: asp.net-mvc asp.net-mvc-3 c#-4.0 razor routing

我正在使用MVC3 / Razor。但是我不明白为什么我在redirecToAction时会出现上一页的网址。

场景:一旦用户点击主页上的注册,如“帐户/注册”,他就会得到RedirectToAction(“AcceptCondition”),所以一旦用户接受条件并发布,那么用户就会获得RedirectToAction(“注册”) )我将检查他是否来自“AcceptCondition”页面,然后他可以继续,否则用户将返回“AcceptCondition”页面。因此,当我将用户从注册页面重定向到AcceptCondition页面时,地址栏中的URL显示为“http:// localhost:55104 / Account / Signup”而不是“http:// localhost:55104 / Account / AcceptCondition”

我知道当他点击注册时我可以直接将用户发送到“Account / AcceptCondition”,但我只是按照上面的方案。

public ActionResult Signup(string ru)
{
    if ((ru == "/Account/AcceptCondition") || (ru == "/Account/Signup"))
    {
        return View();
    }
    else
    {
        return RedirectToAction("AcceptCondition");
    }
}

[HttpGet]
public ActionResult AcceptCondition()
{
    return View();
}

[HttpPost]
public ActionResult AcceptCondition(AcceptConditionViewModel acceptCondiViewModel)
{
    if (acceptCondiViewModel.TermAndCondi == true)
    {
        return RedirectToAction("Signup",  
                                "Account", 
                                new { ru = "/Account/AcceptCondition" });
    }
    else
    {
        return View();
    }
}

2 个答案:

答案 0 :(得分:0)

  1. 注册GET检查是指,如果不是AcceptCondition,则重定向到AcceptCondition 如果是AcceptCondition,则渲染正常的注册视图。

  2. AcceptCondition GET呈现AcceptCondition视图

  3. AcceptCondition POST执行RedirectToAction(“SIGNUP”)
  4. 注册POST创建用户(假设)然后去?
  5. 听起来像推荐人检查不对,所以再次呈现/ account / signup? 您的代码是什么样的。

答案 1 :(得分:0)

看来您在第一个函数中传递了'returnUrl'参数,但在函数体和第三个函数的RedrectToAction调用中都将其引用为'ru'。确保您与参数名称保持一致,因为这可能是错误逻辑和错误/不工作重定向的原因。