【问题标题】:How to create a MVC3 Route having dot '.' in it如何创建具有点“。”的 MVC3 路由在里面
【发布时间】:2012-05-21 13:27:24
【问题描述】:

如何使用带有点的静态 url 指定路由。

routes.MapRoute( "RouteForContentFolder", // Route name 
"Content/PDF/ABC.pdf", // URL with parameters 
new { controller = "User", action = "GetPdf"}// Parameter defaults 
); 

如果我指定这条路线,它会直接打开 PDF 文件,而无需通过控制器和操作。

我猜 ABC.pdf 中的点是问题所在。

谁能告诉我如何指定点 '.'在静态网址中。

我希望这条路由只有在传入的 url 是

时才起作用

http://www.domainname.com/Content/PDF/ABC.pdf

提前致谢。

【问题讨论】:

  • 更糟糕的情况是,您将 ABC.Pdf 作为 PDF 路由的参数并在您的控制器方法中验证它..
  • 你是说你有一个静态文件“/content/pdf/abc.pdf”?如果是这样,物理文件将在 .NET 尝试将您的请求与已知路由匹配之前首先提供服务。重命名或移动您的 PDF 文件,该路径将起作用。
  • 这个URL的目的是什么,要通过Controller后打开文件吗?

标签: asp.net-mvc-3 asp.net-mvc-routing


【解决方案1】:

像往常一样路由到您的控制器,然后让您的控制器返回 pdf。

对于一个资源的固定路由不是很可扩展,想象一下如果你有两个或 10 个资源,需要维护多少路由。

【讨论】:

  • 嗨,对不起,但我担心的是当 url 有 .关键字,例如:http:domainname.com/Content/PDF/ABC.pdf
  • 好的,那么您可以接收pdf文件名作为参数。 “内容/PDF/{文件名}”
  • 使用该 url,调试器不会进入控制器和操作方法。它直接打开 .pdf 文件。
  • 你从来没有回答我的问题,“/content/pdf/abc.pdf”是文件系统上的物理文件吗?
  • @shakti 你可以参考这个stackoverflow问题:Dot character in ASP.NET MVC 3 route parameters
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多