ASP.NET MVC przekazuje identyfikator w ActionLink do kontrolera


99

Nie widzę możliwości odzyskania identyfikatora, który wysyłam w html.ActionLink w moim kontrolerze, oto co próbuję zrobić

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


    public ActionResult Modify(string ID)
    {

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

To właśnie zalecał samouczek, który śledziłem, ale nie działa, ale umieszcza również? Długość = 5 na końcu adresu URL!

Z góry dziękuję!

edycja: tutaj jest trasa, której używam, jest domyślna

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

Wygląda na to, że ktoś odrzucił dwie poniższe sugestie, ale nie opublikował ich rozwiązania!

Odpowiedzi:


204

Wygląda na to, że nie używasz prawidłowego przeciążenia ActionLink. Spróbuj tego:-

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

Zakłada się, że Twój widok znajduje się w folderze / Views / Villa. Jeśli nie, to podejrzewam, że potrzebujesz: -

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

5
Dobre wywołanie - problem polegał na tym, że pierwsze przeciążenie tej funkcji miało „HtmlAttributes” jako czwarty parametr. Zatem dodanie ", null" zmusiło kompilator do użycia twojego obiektu inline jako parametrów trasy.
Timothy Khouri,

27

W MVC 4 możesz łączyć się z jednego widoku do innego kontrolera, przekazując identyfikator lub klucz podstawowy za pośrednictwem

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

13

Nie umieszczaj @ przed id

new { id = "1" }

Framework "tłumaczy" to na? Długość, gdy występuje niezgodność w parametrze / trasie


6

Na MVC 5 jest dość podobnie

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })

2

Identyfikator będzie działał również ze @znakiem z przodu, ale musimy dodać jeden parametr po tym. to jestnull

wygląda jak:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.