2017-09-27 4 views
0

J'ai une application web ASP.Net MVC 4 dans VS 2017. J'ai fait une aide personnalisée (un lien). Je débogués et l'aide personnalisée sorties le lien correct: Comme ceci:URL erronée au survol de la souris dans Razor

<a href="MyController/MyAction?Id=3" id="MyLink">Click here</a> 

également dans le code source de vue du navigateur, il montre ok.

Mais quand je souris sur le lien l'URL montre comme ceci:

http://localhost:1234/MyController/MyController/MyAction?Id=3 

C'est, la partie du contrôleur apparaît en double, et bien sûr quand je clique, il ne va pas à la bonne destination.

Des idées, que s'est-il passé?

+1

Vous avez fait une aide de lien personnalisé. Cela provoque une erreur. Vous avez besoin d'aide pour cette erreur. Alors s'il vous plaît lire [demander] et inclure le code réel de votre assistant de lien personnalisé. – CodeCaster

Répondre

1

Vous semblez sortir une URL relative. Les URL relatives sont toujours .. ahem .. par rapport à l'URL actuellement affichée.

Vous souhaiterez probablement placer une barre oblique devant votre URL relative pour la rendre relative à la racine du site, plutôt que relative à l'URL actuelle.

<a href="/MyController/MyAction?Id=3" id="MyLink">Click here</a> 
+1

Ce qui fonctionne bien, jusqu'à ce que vous déployiez votre application en tant qu'application dans un site Web, par exemple, 'FooApp'. Ensuite, les liens vont 'http: // localhost/MyController' au lieu de' http: // localhost/FooApp/MyController'. Il y a une raison pour laquelle MVC vient avec des aides de lien, ils font bien leur travail. Ne réinventez pas la roue. – CodeCaster

+0

Vous avez raison, Sam Axe. J'ai ajouté une barre oblique et ça s'affiche, –

+0

Oui, j'utilise les aides fournies avec MVC, mais cette fois-ci j'avais besoin d'une aide personnalisée car j'avais besoin d'une logique pour afficher différents contenus et balises (en fonction d'une condition). Je n'ai pas inclus dans ma réponse pour des raisons de simplicité. –

0

Dans le procédé de Url.Action ci-dessus, le premier paramètre est le nom de la méthode d'action et le second paramètre est le nom du dispositif de commande dans lequel ce procédé d'action existe.

Url.Action in ASP.NET MVC

<a href="@(Url.Action("MyAction","MyController",new{Id=3}))" id="MyLink">Click here</a>