RouteConfig.Cs中的ReturnUrl无法正常工作

时间:2015-07-26 06:16:33

标签: asp.net-mvc asp.net-mvc-5.2

在我的MVC项目中,我在RouteConfig.Cs中使用此代码

routes.MapRoute(
                name: "Signin",
                url: "login/{ReturnUrl}",
                defaults: new { controller = "Account", action = "Signin", ReturnUrl = UrlParameter.Optional }
            );

但是当我从另一个页面浏览登录页面时,url工作不正常,例如:

localhost:43773 / account / signin?ReturnUrl = anotherpage

我希望:localhost:43773 / login / anotherpage

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我理解你的期望。但ASP.NET MVC不会根据您定义的路由生成URL。这既不必要,也会产生开销。

如果您拥有像localhost:43773 / account / login / anotherpage这样的网址非常重要,那么您可以查看IIS URL Rewrite Module

以下是如何实现您想要的目标的示例

<rewrite>
    <rules>
        <rule name="Standardize Log In Url" stopProcessing="true">
            <match url="^account/signin?ReturnUrl=([0-9a-z]+)" />
            <action type="Rewrite" url="account/login/{R:1}" />
        </rule> 
    </rules>
</rewrite>

注意此解决方案未经测试,因此您可能需要对其进行一些修改。