Domanda

Non ho il link in basso su una pagina rasoio:

@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" })

Appare in Thes sorgente della pagina di visualizzazione, come illustrato di seguito:

<a href="/admin/profile/create?length=7" class="toplink">Create New Profile</a>

Quando clicco sul link l'URL è simile a questo:

http://localhost:54876/admin/profile/create?length=7

Non voglio ?length=7. Perché viene generato questo auto?

È stato utile?

Soluzione

L'override ActionLink che si sta utilizzando le partite al (string linkText, string ActionName, routeValues ??Object, oggetto htmlAttributes) Azionamento . Quindi, il tuo valore "profilo" viene passato al parametro routeValues. Il comportamento di questa funzione rispetto a questo parametro è quello di prendere tutte le proprietà pubbliche su di esso e aggiungerlo alla lista di valori di routing usati per generare il collegamento. Dal momento che una stringa ha una sola proprietà pubblica (lunghezza) si finisce con "Lunghezza = 7".

e la correttezza di sovraccarico che si desidera utilizzare è la (stringa linkText, ActionName string, string NomeControllore, routeValues ??Object, oggetto htmlAttributes) e lo chiamate Loke modo:

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"})

Altri suggerimenti

Non sono sicuro che la causa esatta di questa, ma modificarla in:

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" })

Non so che sovraccaricare MVC è in ripresa quando si esce fuori l'ultimo parametro (htmlattributes è aggiunto uno), ma che risolvere il problema. Uno di questi giorni mi indagare e capire esattamente cosa sta succedendo.

Un'altra cosa da notare, dal momento che si sta definendo il controller nella @ActionLink, che non potrebbe essere necessario fare, per esempio, l'idea che il vostro "Crea nuovo profilo" @ActionLink è espresso in potrebbe essere "/ admin / profile / index.cshtml", una visione che le liste profili esistenti, in questo caso, non è necessario per definire il controller nella @ActionLink come il @ActionLink è già relativamente al ProfileController, così il vostro @ActionLink potrebbe essere

@Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" })

ho usato null anziché new{} come la risposta marcata fa, penso che questo sia più appropriato me stesso. sovraccarichi ActionLink non sono la cosa più semplice mai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top