2017-02-07 12 views
-1

я Тринг есть ссылка связать /View/тест он работает только тогда, когда это ИНТ как/View/1Как отправить идентификатор строки в контроллер с помощью ActionLink

моей ссылка вида действия

@Html.ActionLink(item.className, "Viewe", "subject", new {id =item.className },null) 

мое действие управления

 public ViewResult Viewe(string id) 
    { 
     //some database 
     return View(); 
    } 

я получаю эту ошибку Server Error in '/' Application. если я изменить идентификатор в любой вещь она отлично работает, но ссылка будет выглядит это: Посмотреть что-нибудь = п

изображение ошибки

image of the error

маршрут Код

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
+0

Проверьте ** файл ** Route.Config ** под * * App_Start **. вы найдете фрагмент кода, который обрабатывает маршрут. По умолчанию он принимает 'controller/action/id'. Чтобы принять «что угодно» в качестве параметра и создать удобный URL-адрес, вам нужно создать собственный маршрут и заменить параметр «id» на «что-либо». – Prabhat

+0

У меня все еще есть такая же проблема, мне все равно, если я использую param как «id» или «anything», id подходит для меня, но у меня все еще такая же ошибка –

+0

Не используйте имя действия 'View', вы скрывая безпараметрическую версию метода контроллера «View», который попытается найти файл '.cshtml' с соответствующим именем. Вы можете сделать следующее: '[ActionName (« View »)] public ViewResult ViewAction (строковый идентификатор)' –

ответ

0

это работает для меня

@Html.ActionLink(item.ClassName, "Viewe", "Subject", new { Id = item.ClassName }, null)