我正在使用此操作链接向路由器发送路由值id
,但我的ID值为config.xml
这是我的行动链接
@Html.ActionLink("Destroy", "DeleteFile", "Files", new { id = "config.xml"})
问题是,当我想点击此链接时,浏览器将其理解为以url
config.xml
像这样
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");
}
答案 0 :(得分:3)
你可以使用this overload of 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
)
答案 1 :(得分:0)