J’ai lien sur la page de razor ci-dessous.
@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" })
Je vois la source de la page qui est en dessous
Create New Profile
Lorsque je clique sur le lien. L’URL est comme ci-dessous.
http://localhost:54876https://stackoverflow.com/admin/profile/create?length=7
Je ne veux pas? Longueur = 7. Pourquoi cela est généré automatiquement
Le ActionLink
remplace les correspondances au remplacement de la chaîne (linkText, ssortingng actionName, Object routeValues, Object htmlAtsortingbutes) . Donc, votre valeur “Profile” est transmise au paramètre routeValues
. Le comportement de cette fonction par rapport à ce paramètre consiste à prendre toutes les propriétés publiques et à l’append à la liste des valeurs de route utilisées pour générer le lien. Comme une chaîne ne possède qu’une seule propriété publique (Length), vous obtenez “length = 7”.
La surcharge correcte que vous souhaitez utiliser est la chaîne (linkText, ssortingng actionName, ssortingng controllerName, Object routeValues, Object htmlAtsortingbutes) et vous l’appelez loke pour:
@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"})
Je ne suis pas sûr de la cause exacte de cela, mais changez-le en:
@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" })
Je ne sais pas quelle surcharge MVC sélectionne lorsque vous htmlatsortingbutes
le dernier paramètre ( htmlatsortingbutes
est le dernier), mais cela htmlatsortingbutes
le problème. Un de ces jours, je vais enquêter et comprendre exactement ce qui se passe.
Une autre chose à noter, puisque vous définissez le contrôleur dans le @ActionLink
, ce que vous n’avez peut-être pas besoin de faire, par exemple, l’affichage de votre “Créer un nouveau profil” @ActionLink
peut être “/ admin / profile / index .cshtml “, une vue qui répertorie les profils existants, dans ce cas, vous n’avez pas besoin de définir le contrôleur dans le @ActionLink
car @ActionLink
est déjà relatif au ProfileController
, votre @ActionLink
pourrait donc être
@Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" })
J’ai utilisé null
au lieu de new{}
comme le fait la réponse marquée, je pense que c’est plus approprié moi-même. Les surcharges ActionLink ne sont jamais les plus simples.