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.