Domanda

Ho il seguente codice nel mio site.master per un menù:

<ul id="menu">              
    <li><%= Html.ActionLink("My Contact Info", "DetailsbyUserName/" + Html.Encode(Page.User.Identity.Name), "Users")%></li>
</ul>

Quando passo il mouse sopra l'URL vedo che punta a:

http://site/Users/DetailbyUserName/[name]

che è corretto.

Il problema è che quando inserisco un punto di interruzione nel file Users classe controller di seguito:

public ActionResult DetailsbyUserName(string loginName)
{
    UserInfo user = repo.GetUserByName(loginName);
    return View(user);
}

sembra che il loginName il parametro è sempre null.

Eventuali suggerimenti?

È stato utile?

Soluzione

Il problema è che non è stata impostata una route per specificare un parametro chiamato " loginName " ;.

Suppongo che il tuo percorso predefinito stia ingoiando la tua richiesta e sto provando ad assegnare il valore [nome] a un parametro chiamato " id " ;. Se si modifica il nome del parametro in & Quot; id & Quot; da " loginName " ;, Scommetto che funzionerà per te.

Ricorda che il motore di routing associa ciascun segmento URL a un parametro denominato. Il percorso predefinito è simile a: "{controller}/{action}/{id}". Se vuoi avere un parametro chiamato & Quot; loginName & Quot ;, dovresti trovare una Route che avesse i segmenti "{controller}/{action}/{loginName}", che era diversa dalla route predefinita, in modo che la route predefinita non corrisponde prima.

Altri suggerimenti

Tentativo:

Html.ActionLink("My Contact Info", "DetailsbyUserName", "Users", new { loginName = Html.Encode(Page.User.Identity.Name), null);

se il tuo controller è qualcosa del genere:

public ActionResult DetailsbyUserName(string veryVeryLongParameterName);

Immagino che tu debba utilizzare new {veryVeryLongParameterName = "YourParamValue" } nel parametro routeValues ​​di ActionLink.

E inoltre, hai bisogno di un percorso per quello.

Anch'io sono molto nuovo in questo, almeno questo è quello che ho capito di ActionLinks, spero che qualcuno possa spiegarlo meglio.

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