Comment obtenir la valeur de rasoir zone de texte dans le même point de vue?
Je suis en utilisant `@Html.Zone de texte("searchString") d'une page d'affichage. J'ai besoin de cette valeur de la textbox dans
@Html.ActionLink("View Items", "Index", new { id = item.transaction_id, searchString = "Value of textbox"}).
Bien sûr la chaîne de recherche de la partie en html lien d'action n'est pas de travail en ce moment mais j'ai besoin de ce que j'ai itinéraire spécifique qui fonctionne en fonction de la chaîne de recherche.
Comment puis-je passer de la valeur de la zone de texte à l'action de lien?
- je vérifier cette cette,cette,cette et cette.
Ce que j'ai essayé est
<script type = "text/javascript">
var value = document.getElementbyID("searchString").Text;
var link = @Html.ActionLink("View Items", "Index", new { id = item.transaction_id, searchString = -1});
link.replace(-1,value);
</script>
Toujours pas de chance. Je comprends Rasoir rend à côté serveur.
Mise à JOUR
j'ai suivantes zone de texte en haut de la vue:
@using (Html.BeginForm("Index", "trans_junction", FormMethod.Get))
{
<p>
Request No: @Html.TextBox("searchString")
<span><input type="submit" value="Search Request" /></span>
</p>
}
Cette zone de texte est zone de recherche dans laquelle l'utilisateur peut rechercher des éléments.
il y a un lien d'Action comme suit:
@Html.ActionLink("View Items", "Index", new { id = item.transaction_id }) |
et un itinéraire config:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{searchString}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, searchString= UrlParameter.Optional }
);
}
}
Maintenant, j'ai besoin de transmettre les valeurs que ma carte d'itinéraire via actionlink. Comme suggéré dans la réponse par StephenMuecke, j'ai essayé de modifier mon @using (Html.BeginForm("Index", "trans_junction", FormMethod.Get))
avec @using (Html.BeginForm("Index", "trans_junction", new { id = item.transaction_id }, FormMethod.Get))
mais l'article n'est pas accessible, il.
Lorsque l'utilisateur cliquez sur le bouton rechercher, l'url est http://localhost:57286/trans_junction/Index?searchString=20
si l'utilisateur clic sur le lien d'Action d'url est http://localhost:57286/trans_junction/Index/88
mais j'ai réellement besoin est http://localhost:57286/trans_junction/Index/88/20
qui permettent de préserver le résultat de la recherche et également transmettre l'id.
Je suis l'ajout de captures d'écran pour mieux comprendre.
C'est l'indice de point de vue, sans recherche.
C'est le résultat de la recherche avec searchString = 10.
C'est après avoir cliqué sur le lien d'action c'est à dire Afficher les Éléments, Ici des résultats de recherche ne sont pas conservées.
- Lorsque vous avez essayé ce code à la fin, quel a été le résultat? Ce qui fait la réelle JavaScript côté client, et ce qui était dans le
value
etlink
variables lorsqu'il a exécuté? Je soupçonne fortement votre navigateur de la console montre des erreurs JavaScript lorsque que le code tente d'exécuter. Vous devriez certainement jeter un oeil à ce. - Vous trouverez cela beaucoup plus facile si vous utilisez une zone de texte dans un formulaire (avec
FormMethod.Get
) et le style le bouton soumettre pour ressembler à un lien si que ce que vous voulez (pas de scripts nécessaires). Mais tout ce que vous script est fait, c'est la mise à jour de lahref
attribut. Vous devez annuler la redirection par défaut et ensuite appelerlocation.href=url;
- j'ai besoin d'une zone de texte vaue, que je peux passer avec un lien d'action de sorte qu'il mach le routeconfig route.
- Vous n'avez pas besoin d'un lien d'action - mettre la zone de texte dans un formulaire (avec
FormMethod.Get
et de le soumettre à la méthode GET. - j'ai utilisé @Html.beginform avec FormMethod.Obtenez de l'ignorer, maintenant, je me fais ce genre de url: localhost:57286/trans_junction/Index/74?searchString=52 comme vous pouvez le voir j'ai besoin de passer l'id avec la chaîne de recherche. si je tape l'url comme ceci, localhost:57286/trans_junction/Index/74/52, j'obtiens le résultat souhaité mais je ne sais pas comment je créer un lien pour ce genre de url. Donc, je suis en train de passer via le lien d'action.
Vous devez vous connecter pour publier un commentaire.
Plutôt qu'à la main en essayant de manipuler un lien à l'aide de javascript, l'utilisation d'un formulaire avec
method="get"
. À l'intérieur de votre bouclequi va faire un OBTENIR de l'appel à
ce qui suppose que vous avez une définition de la route avec
Modifier (basé sur la mise à jour question de détails)
Lors de votre retour les résultats filtrés, vous aurez aussi besoin de transmettre la valeur de
searchString
de la vue, de sorte que peut être utilisé pour générer de la route de la valeur dans leActionLink()
méthodes, par exempleet ensuite modifier les liens pour
.../trans_junction/Index/74?searchString=52
il suggère que c'était après que la route par défautViewBag.Filter = searchString;
) et de créer des liens à l'aide de@Html.ActionLink("View Items", "Index", new { id = item.transaction_id, searchString = ViewBag.Filter })
Vous devez définir la valeur sur un événement tel qu'en cliquant sur le ActionLink sinon, comment savez-vous la valeur de la searchString zone de texte à remplacer dans la Actionlink. Ajouter cette javascript sur votre page.
Et vous Rasoir vue actionlink doit être
Essayer:
p.s. pourquoi n'êtes-vous pas à l'aide d'un formulaire à la place de la le lien et envoyer le formulaire lorsque quelqu'un entre dans un
searchString
?celui qui downvoted cette réponse vous pourriez expliquer pourquoi ou de trouver une meilleure solution? parce que, dans son cas,
searchString = Request.Form["inputID"];
doit faire ce qu'il demande.input
valeur côté client et l'ajouter à un lien.Request.Form
fonctionne côté serveur.