Html Dynamique.ActionLink en javascript?
Est-il un moyen d'ajouter un code Html.ActionLink à l'aide de javascript?
Par exemple, j'ai cette fonction Éditer dans mon controller:
public ViewResult Edit(int companyID)
{
....
}
Et j'aimerais faire quelque chose comme ceci en javascript:
var id = $("#hdnID").val();
$("#editLink").html(<%: Html.ActionLink("Edit", "Edit", new { id }) %>);
Un peu brut par exemple, mais c'est en gros ce que j'aimerais faire. Est-il possible?
vous ne pouvez pas utiliser côté client des variables dans le code côté serveur, vous avez besoin d'un formulaire au lieu
OriginalL'auteur Steven | 2011-01-29
Vous devez vous connecter pour publier un commentaire.
La
id
est un script client. Vous ne pouvez pas mélanger de script côté serveur avec un script client. Je crains que vous essayez d'envoyer des formulaires HTML avec des liens d'action au lieu d'utiliser les boutons submit, ce qui est très mauvais. Je vois que vous extraire la valeur d'un champ de saisie avec$("#hdnID").val()
et ensuite essayer de les affecter à une action de lien et l'envoyer au serveur alors que si vous avez utilisé un simple bouton "soumettre" vous n'auriez même pas besoin de javascript. Votre code serait tout simplement:Aussi il est clair que si vous utilisez un champ caché, c'est parce que l'utilisateur ne peut pas modifier la valeur d'une même solution la plus simple serait de générer directement le lien que vous avez besoin de:
si ce code est caché dans un champ, cela signifie que l'utilisateur ne peut pas le modifier, de sorte que vous devriez tout simplement de générer le lien:
<%: Html.ActionLink("Edit", "Edit", new { id = Model.SomeId }) %>
.OriginalL'auteur Darin Dimitrov
Je n'ai pas trouvé un très bon moyen pour le moment. Ce que je fais habituellement est quelque chose comme ceci:
L'essentiel est de choisir une valeur d'identification que vous n'auriez jamais dans la réalité ou qui n'existent pas autrement dans le lien.
OriginalL'auteur Mikael Eliasson
J'ai trouvé un moyen pratique de ce problème en pensant un peu hors de la boîte. La raison que j'utilise ActionLink est vraiment un moyen facile de gérer le routage. Simplement d'alimentation du Contrôleur et le nom de l'action et l'aide génère l'url est correcte. Pour contourner ce problème en JavaScript j'ai d'abord créé un HtmlHelperExtender à l'aide de la UrlHelper pour résoudre l'url dans un contexte approprié.
Maintenant en JavaScript, il est assez facile d'obtenir la bonne Url
OriginalL'auteur patrick
C'est la façon dont je l'ai fait. Vous pouvez utiliser javascript remplacer.
OriginalL'auteur Nurhak Kaya
Le côté serveur de code (C#) est exécuté sur le serveur, et le résultat est envoyé au client, si le client exécute le JavaScript. Donc, aussi bizarre que cela est, vous avez deux de code différents environnements de se cogner les uns les autres, mais ne peut pas interagir les uns avec les autres très bien.
J'ai l'habitude de faire quelque chose comme ça, mais je suis ouvert à de meilleures façons:
Ce tire parti du fait que
/Foo/Bar/{id}
est généralement équivalent à/Foo/Bar?id={id}
, selon la façon dont vos itinéraires sont mis en place.<a href="bar/foo"> </a>?id=idvalue
? devrait utiliser des Url.L'Action de l'OMI.comme dit par @nEEbz, cette méthode retournera
<a href="/Controller/Foo">Bar</a>?id=20
OriginalL'auteur Matt Greer