MVC @ Url.Action重定向到错误的操作?

时间:2013-08-03 01:47:09

标签: asp.net-mvc asp.net-mvc-4 hyperlink url.action

我有一个带有“忘记密码”链接的登录页面,该链接是使用<a>标记href属性@Url.Action("ForgotPassword", "Login", new { Area = "Admin" })创建的,由于某种原因,此链接指示我到登录页面而不是ForgotPassword页面。

有人知道为什么会这样吗?我一直在调查,发现我的项目并不奇怪。

另一个注意事项:我的Login控制器上的“Index”操作被点击,但“ForgotPassword”操作永远不会。

以下是ForgotPassword操作:

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

3 个答案:

答案 0 :(得分:0)

此问题不在@ Url.Action中。这是因为您拒绝访问此操作。可能是您的登录控制器上有[授权]属性。如果您不想删除[Authorize]属性,可以在web.config中执行操作:

<configuration>
    ...

    <location path="Login/ForgotPassword">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>

...
</configuration>

答案 1 :(得分:0)

如果[Authorize]控制器中存在Login属性,请移动它并将其放入您希望用户可以访问isAuthorized的操作中。

答案 2 :(得分:0)

事实证明我的问题是由我的BaseController.cs引起的,我的所有其他控制器都是从我这里继承的。由于我修复了错误的验证逻辑,它正在重定向到登录。

感谢大家提出明智的建议。