0

我想在 ASP.NET MVC 中自定义路由。和

@Url.Action("ViewDoc", "Home", new { FileName = "ABC.pdf" })

 routes.MapRoute(
         name: "",
         url: "{controller}/{action}/{FileName}",
         defaults: new
         {
             controller = "Home",
             action = "ViewDoc",
             FileName = UrlParameter.Optional
         }

我明白了

http://localhost/Home/ViewDoc?FileName=ABC.pdf

如何获得以下?

http://localhost/Home/ViewDoc/ABC.pdf
4

3 回答 3

2

您粘贴的代码是正确的,但您的路线设置中的顺序可能是错误的。将routes.MapRoute方法移动到默认路由之上,它应该可以按预期工作。

于 2014-05-31T12:04:21.653 回答
1

关于您的 404 错误:

我在末尾使用带有文件名的相同类型的 URL 并遇到相同的路由问题。就像你一样,我尝试用控制器来接听电话。

我认为问题在于 URL 被视为服务器上文件的直接链接,它只会尝试获取文件而不是调用控制器。在 URL 建议的物理位置找不到文件将触发 404 错误。

我选择使用的解决方法是在文件名后的 URL 末尾添加一个“/”字符。还有其他的。

我建议您阅读这个相关问题: Dots in URL cause 404 with ASP.NET mvc and IIS

于 2015-03-23T16:20:50.993 回答
0

我能够得到

 localhost/Home/ViewDoc/ABC.pdf 

public FileResult View(string FileName) { 

routes.MapRoute( "", "Home/ViewDoc/{FileName}", new { controller = "Home", action = "ViewDoc" } ); 

对于错误 404.0,在下面添加了以下内容

 <add
       name="AdfsMetadata"
       path="/Home/ViewDocu/*"
       verb="POST"
       type="System.Web.Handlers.TransferRequestHandler"
       preCondition="integratedMode,runtimeVersionv4.0" />
于 2014-06-03T04:36:52.353 回答