gpt4 book ai didi

c# - 包含特定字符的 ActionLink 路由值

转载 作者:太空狗 更新时间:2023-10-29 23:30:47 25 4
gpt4 key购买 nike

我正在使用此操作链接将路由值 id 发送到 Controller ,但我的 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 的 Controller 。如何防止这种情况发生并将此 config.xml 作为参数而不是文件?

这是我的路线

routes.MapRoute(
name: "delete files",
url: "Files/DeleteFile/{id}",
defaults: new
{
controller = "Files",
action = "DeleteFile",
id= UrlParameter.Optional
}
);

我也试过 id ,filename 但没有任何改变

这是我的 Controller

[HttpGet]
public ActionResult DeleteFile(string id)
{
return view("DeleteFile");
}

最佳答案

您可以使用 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
)

Here is a working DEMO Fiddle

关于c# - 包含特定字符的 ActionLink 路由值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com