I am using this action-link to send a route value id
to controller but my id value like this config.xml
and here is my action-link
@Html.ActionLink("Destroy", "DeleteFile", "Files", new { id = "config.xml"})
The question is when I want to click this link browser understand this as a url
that ends with config.xml
like this
http://localhost:12380/Files/DeleteFile/config.xml
and doesn't go to the controller it returns 404 - not found
.
How to prevent this from happening and make this config.xml
as a parameter not as a file?
here is my route also
routes.MapRoute(
name: "delete files",
url: "Files/DeleteFile/{id}",
defaults: new
{
controller = "Files",
action = "DeleteFile",
id= UrlParameter.Optional
}
);
also i tried instead id ,filename
but nothing changed
and here is my controller
[HttpGet]
public ActionResult DeleteFile(string id)
{
return view("DeleteFile");
}
You can do it using this overload of Html.ActionLink() like this:
@Html.ActionLink("Destroy",
"DeleteFile",
"Files",
new RouteValueDictionary { {"file", Url.Encode("config.xml")} },
null)
and Action:
public ActionResult DeleteFile(string file)
{
// delete logic here
return View();
}
From 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With