Question

Je le lien ci-dessous sur une page de rasoir:

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

Il apparaît dans Thes source de la page d'affichage comme indiqué ci-dessous:

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

Lorsque je clique sur le lien de l'URL est comme ceci:

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

Je ne veux pas ?length=7. Pourquoi est-ce généré automatiquement?

Était-ce utile?

La solution

Le remplacement de ActionLink vous utilisez correspond à la (chaîne linkText, chaîne actionName, routeValues ??d'objets, d'objets htmlAttributes) de commande prioritaire . Donc, votre valeur « Profil » est transmis au paramètre routeValues. Le comportement de cette fonction par rapport à ce paramètre est de prendre toutes les propriétés publiques sur elle et l'ajouter à la liste des valeurs d'itinéraire utilisées pour générer le lien. Depuis une chaîne ne possède qu'une seule propriété publique (Longueur) vous vous retrouvez avec « longueur = 7 ».

La surcharge correcte que vous souhaitez utiliser est le (string linkText, actionName chaîne, chaîne ControllerName, objet routeValues, objet htmlAttributes) et vous l'appelez Loke donc:

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

Autres conseils

Je ne suis pas sûr que la cause exacte de cela, mais le changement à:

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

Je ne sais pas quelle surcharge MVC est la cueillette lorsque vous omettez le dernier paramètre (htmlattributes est ajouté un), mais fixerai. L'un de ces jours, je vais mener des enquêtes et de savoir exactement ce qui se passe.

Une autre chose à noter, puisque vous définissez le contrôleur dans le @ActionLink, que vous ne pouvez pas besoin de le faire, par exemple, le point de vue que votre « Créer un nouveau profil » @ActionLink est exprimé en peut-être « / admin / profil / Index.cshtml », vue que les listes des profils existants, dans ce cas, vous n'avez pas besoin de définir le contrôleur dans le @ActionLink comme @ActionLink est déjà par rapport à la ProfileController, de sorte que votre @ActionLink pourrait être

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

J'utilisé null au lieu de new{} comme la réponse marquée le fait, je pense que cela est plus moi-même approprié. ActionLink ne sont pas les surcharges la chose la plus simple jamais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top