包含特定字符的操作链接路由值
本文关键字:链接 路由 操作 字符 包含特 | 更新日期: 2023-09-27 18:36:40
我正在使用此操作链接将路由值id
发送到控制器,但我的 id 值如下所示config.xml
这是我的行动链接
@Html.ActionLink("Destroy", "DeleteFile", "Files", new { id = "config.xml"})
问题是当我想单击此链接浏览器时,将其理解为以config.xml
结尾的url
喜欢这个
http://localhost:12380/Files/DeleteFile/config.xml
并且不转到控制器,它返回404 - not found
.如何防止这种情况发生并使此config.xml
作为参数而不是文件?
这也是我的路线
routes.MapRoute(
name: "delete files",
url: "Files/DeleteFile/{id}",
defaults: new
{
controller = "Files",
action = "DeleteFile",
id= UrlParameter.Optional
}
);
我也尝试了id ,filename
但没有任何改变
这是我的控制器
[HttpGet]
public ActionResult DeleteFile(string id)
{
return view("DeleteFile");
}
你可以像这样使用 Html.ActionLink() 的重载来做到这一点:
@Html.ActionLink("Destroy",
"DeleteFile",
"Files",
new RouteValueDictionary { {"file", Url.Encode("config.xml")} },
null)
和操作:
public ActionResult DeleteFile(string file)
{
// delete logic here
return View();
}
从 MSDN:
public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
RouteValueDictionary routeValues,
IDictionary<string, Object> htmlAttributes
)
这是一个工作演示小提琴
在这里
我找到了答案,我们可以简单地在config.xml
末尾添加/
这里有一些答案