ASP.NET MVC передає ідентифікатор у ActionLink контролеру


98

Я не бачу, щоб отримати ідентифікатор, який я надсилаю в html.ActionLink у своєму контролері, ось що я намагаюся зробити

<li>
    <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li>


    public ActionResult Modify(string ID)
    {

        ViewData["Title"] =ID;
        return View();
    }

Ось який підручник, який я дотримувався, рекомендував, але він не працює, він також ставить? Length = 5 в кінці URL-адреси!

Спасибі заздалегідь!

редагувати: ось маршрут, який я використовую, він за замовчуванням

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

Схоже, хтось відхилив дві пропозиції нижче, але не опублікував їх рішення!

Відповіді:


203

Не схоже, що ви використовуєте правильну перевантаження ActionLink. Спробуйте це:-

<%=Html.ActionLink("Modify Villa", "Modify", new {id = "1"})%>

Це передбачає, що ваш перегляд знаходиться в папці / Views / Villa. Якщо ні, то підозрюю, що вам потрібно: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>

4
Хороший дзвінок - Проблема полягала в тому, що перше перевантаження цієї функції прийняло "HtmlAttributes" як четвертий параметр. Тому додавання "null" змусило компілятора використовувати ваш вбудований об'єкт як параметри маршруту.
Тимофій Хорі

26

У MVC 4 ви можете зв’язатись з одного виду на інший контролер, передаючи Id або Первинний ключ через

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

12

Не ставте @ перед ідентифікатором

new { id = "1" }

Фреймворк "переводить" це в? Тривалість, коли є невідповідність параметра / маршруту



1

Ідентифікатор також буде працювати зі @знаком спереду, але нам потрібно додати один параметр після цього. це єnull

виглядає як:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.