我想在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
答案 0 :(得分:2)
您粘贴的代码是正确的,但路线设置中的顺序可能是错误的。将routes.MapRoute
方法移至上方默认路由,它应该按预期工作。
答案 1 :(得分:1)
关于404错误:
我使用的是同一种带有文件名的URL,并且遇到了相同的路由问题。 就像你一样,我试着用控制器接听电话。
我认为问题是URL被视为服务器上文件的直接链接,它只会尝试获取文件而不是调用控制器。在URL建议的物理位置找不到文件将触发404错误。
我选择使用的解决方法是在文件名后面的URL的最后添加一个“/”字符。 还有其他人。
我建议你阅读这个相关的问题: Dots in URL causes 404 with ASP.NET mvc and IIS
答案 2 :(得分: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" />