ASP.NET MVC在所有url的末尾忽略".html"

Anw*_*dra 10 asp.net-mvc url-routing

我是asp.net mvc的新手,现在正在努力使用url路由.我正在使用asp.net mvc 3 RC2.

如何创建一个URL路由,以便在URL中忽略最终扩展名.扩展可以是:.html, .aspx,.php,.anything.

例如,这些网址:

/Home.html
/Home.en
/Home.fr
/Home
Run Code Online (Sandbox Code Playgroud)

应该去Home控制器吗?

再举一个例子:

/Home/About.html
/Home/About.en
/Home/About.fr
/Home/About
Run Code Online (Sandbox Code Playgroud)

应该去Home控制器和About行动.

谢谢 :)

Dan*_*son 6

我不确定你是否使用IIS7,但如果是这样,那么我会推荐一个重写规则来检查结尾的url .xyz然后在没有的情况下对它们进行重写.xyz.

像这样的东西:

<rewrite>
  <rules>
    <rule name="HtmlRewrite">
      <match url="(.*)(\.\w+)$" />
      <action type="Rewrite" url="{R:1}" />
    </rule>
  </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

这将处理您建议的用例.任何以扩展名和某些字符结尾的内容都将被重写为没有扩展名的网址.这样做的好处是您只需要一条路线,因为一切都进入您的应用程序.