我有一个带有Index()ViewResult的DirectoryController,它在视图中显示以下链接:
@Html.ActionLink("My file 1", "Index", "File", new { @id = "123" }, null) <br />
@Html.ActionLink("My file 2", "Index", "File", new { @id = "456" }, null) <br />
@Html.ActionLink("My file 3", "Index", "File", new { @id = "789" }, null) <br />
如果我点击其中一个链接,我最终会在网址中显示(例如)以下内容:
我真正想要的是URL中的以下内容:
基本上,我想在URL中看到Controller名称和自定义名称(例如文件的名称),而不显示实际的操作或 id
无论我单击哪个链接,所有这些链接都应该继续指向FileController的Index()方法,并传递相应的 id 。
我该怎么做?
我应该如何创建自定义路线?
由于
答案 0 :(得分:1)
总体概述:
您要做的是创建路线映射
例如翻译用户友好的网址
您需要在您的controller / global.asax
中进行一些更新路线的例子
context.MapRoute(
"FileNameMapping",
"File/{filename}",
new {controller="File", action = "Index" });
在您的行动中,您将拥有类似
的内容Public FileResult Index(string filename){
// do your logic for handleling file name
//and return file
}
答案 1 :(得分:0)
如果您要在IIS而不是Casini上运行此操作,则可以使用URL重写来实现所需的结果。