2015-01-08 4 views
5

Я использую эту экшен-ссылку, чтобы отправить значение маршрута id к контроллеру, но мое значение идентификатора, как этот config.xml и вот мое действие-ссылказначение маршрута ActionLink, содержащее определенные символы

@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

вот мое действие-результат [HttpGet] public ActionResult DeleteFile (string id) { {view = "DeleteFile"); } –

+0

И как выглядит ваш маршрут? Может быть, существует «int» -контракт? – ChrFin

+0

вот мой маршрут routes.MapRoute ( названия: "Удалить файлы", URL: "Файлы/DeleteFile/{ID}", по умолчанию: новый { контроллера = "Файлы", действия = «DeleteFile ", id = UrlParameter.Optional } ); –

ответ

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 
) 

Here is a working DEMO Fiddle

+0

Спасибо, я попробовал ваш метод, но все тот же –

+0

@Younisbarznji не использует '' id'', поскольку параметр использует какое-то другое имя, например, я использовал '' file'', идентификатор изменен путем маршрутизации, поэтому считается путь к файлу –

+0

point is when i remove .xml из параметра он работает нормально, но с .xml понимает, как страница –