5

我正在使用此操作链接向id控制器发送路由值,但我的 id 值是这样config.xml 的,这是我的操作链接

 @Html.ActionLink("Destroy", "DeleteFile", "Files", new { id = "config.xml"})

问题是当我想单击此链接时,浏览器将其理解为urlconfig.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");
         }
4

2 回答 2

3

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

这是一个有效的演示小提琴

于 2015-01-08T12:05:43.027 回答
0

在这里,我找到了我们可以简单地/在末尾添加的答案config.xml

这是一些答案

于 2015-01-13T10:38:39.993 回答