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

99

Я не вижу, чтобы получить идентификатор, который я отправляю в 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
        );

похоже, что кто-то отклонил два предложения ниже, но не опубликовал свое решение!

Планшет
источник

Ответы:

204

Не похоже, что вы используете правильную перегрузку ActionLink. Попробуй это:-

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

Предполагается, что ваше представление находится в папке / Views / Villa. Если нет, то я подозреваю, что вам нужно: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>
ЭнтониУ Джонс
источник
5
Хороший вызов. Проблема заключалась в том, что первая перегрузка этой функции приняла «HtmlAttributes» в качестве четвертого параметра. Таким образом, добавление ", null" вынуждает компилятор использовать ваш встроенный объект в качестве параметров маршрута.
Timothy Khouri
28

В MVC 4 вы можете связать одно представление с другим контроллером, передавая идентификатор или первичный ключ через

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 
Оракула
источник
14

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

new { id = "1" }

Фреймворк «переводит» его в размер при несоответствии параметра / маршрута

Давиде Вости
источник
6

На MVC 5 довольно похоже

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })
Сезар Леон
источник
2

Идентификатор также будет работать со @знаком впереди, но после этого мы должны добавить один параметр. то естьnull

выглядит как:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
эбсом
источник