【问题标题】:Rewriting url in asp.net-mvc4 (razor) with extention用扩展名重写 asp.net-mvc 4(剃刀)中的 url
【发布时间】:2013-12-24 02:55:14
【问题描述】:

asp.net-mvc4 的默认值为http://domainname.com/products/1,带有路由

routes.MapRoute(
    name: "Products",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional }
);

我想重写为具有 .html 扩展名的http://domainname.com/products/1.html。 对此有何想法?

【问题讨论】:

  • 您为什么要这样做?您没有在此处处理文件。
  • 我不想这样做,但这是客户的想法

标签: c# asp.net-mvc asp.net-mvc-4 routes


【解决方案1】:

你是这个意思吗:

routes.MapRoute(
    name: "Products",
    url: "{controller}/{action}/{id}.html",
    defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional }
);

【讨论】:

  • 我不知道,可能是。但是如果id参数为null,url会`code:domainname.com/product/.html',不对
  • 没错,我认为您应该另辟一条路线来处理这种情况。
【解决方案2】:

为什么要将 .html 扩展名添加到查询字符串或路由参数中?

如果您使用带有 html 文件的网站,则扩展名是页面而不是参数。不知道您是否有任何特定要求将其始终放在网址的末尾。但这没有任何意义。

routes.MapRoute(
name: "Products",
url: "{controller}/{action}.html/{id}",
defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional }
);

完成上述操作后,您可能会遇到 iis 问题,请同时查看此讨论。 ASP.NET MVC Routing - add .html extension to routes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2015-05-30
    • 2011-04-12
    • 2011-06-09
    相关资源
    最近更新 更多