在我的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
我该如何解决这个问题?
答案 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>
注意此解决方案未经测试,因此您可能需要对其进行一些修改。