0
votes

Lire le texte d'entrée sur un bouton Soumettre

html xxx

contrôleur xxx

Lorsque vous cliquez sur le bouton J'ai besoin d'une manière ou d'une autre, lisez l'entrée de texte (numéro) de l'élément d'entrée et de la publier sur contrôleur. Comment cela peut il etre accompli ?


2 commentaires

Vous pouvez soit envelopper sous une forme, soit utiliser JavaScript et Ajax. En général, dans une page Web, ce sont les deux manières que vous pouvez envoyer des données au serveur. Ce sont toujours vos options


J'ai essayé à la fois le formulaire et utiliser JavaScript / Ajax mais en vain. S'il vous plaît voir la réponse donnée ci-dessous en pertinence pour votre commentaire. Merci


3 Réponses :


1
votes

ou utiliser le formulaire avec le code de rasoir, c'est comme suit:

<div class="fc-option-more-input">
@using (Html.BeginForm("AddToCart", "Controller", new { id = 0 }, FormMethod.Post))
{
  <input type="number" id="itemCount" name="itemCount"/>
  <button type="submit"><span>Add</span></button>
}
</div>


14 commentaires

Votre suggestion publie avec succès des données sur ADDTTOCART ACTION mais ne donnez pas de contrôle normal à la dernière ligne de code dans addtocart est redirectToaction ("index"); < / code> et il n'est pas exécuté


Donc, laissez l'utilisation du formulaire HTML à envoyer une demande


Pouvez-vous s'il vous plaît démontrer cela?


Édité dans ma réponse


@Model [i] .itemid posté?


Le dictionnaire des paramètres contient une entrée nulle pour le paramètre 'ID' de type non nullable 'System.int32' pour la méthode 'System.web.mvc.ActionResult Addtocart (int32, int32)' dans 'Onlinestore.Controls.shoppingCartController' .


routes.maproute (nom: "addtocart", URL: "{contrôleur} / {action} / {action} /", valeur par défaut: nouveau {contrôleur = "shoppingcart", action = "addtocart"});


J'ai aussi ajouté 1 autre route vers la même action que: routtes.maproute (Nom: "Prix", URL: "{contrôleur} / {action} / {id} / {itemcount}", valeur par défaut: nouveau { contrôleur = "shoppingcart", action = "addtocart", id = "", élémentcount = ""});


J'ai ajouté le paramètre d'identification dans ma réponse, j'espère que cela aidera


Le dictionnaire Paramètres contient une entrée NULL pour le paramètre 'itemCount'


Tapez quelque chose à votre étiquette d'entrée, ne le laissez pas nulle


Le bouton Ajouter est désactivé par défaut. C'est actif uniquement lorsque l'utilisateur tape un numéro dedans.


J'ai testé sur mon local et cela fonctionne complètement si la balise d'entrée a un nombre. Sinon, cela me donne "Le dictionnaire de paramètres contient une entrée nul pour le paramètre" itemCount "" comme vous le dites.


Veuillez supprimer le code Ajax car il ne l'a pas résolu. Le code HTML est la réponse. Merci



1
votes

Pourquoi n'utilisez-vous pas de modèle pour soumettre vos formulaires avec le côté du contrôleur

public int Id {get;set;}
public int ItemCount {get;set;}


0 commentaires

0
votes
@using (Html.BeginForm("AddToCart", "ShoppingCart", new { id = Model[i].ItemID}, FormMethod.Post))
{
    <div class="fc-option-more-input">
     <input type="number" id="itemCount" name="itemCount">
     <button type="submit" class="button button-add-custom-qty" disabled="disabled">
         <span>Add</span>
     </button>
}
</div>
This solved it for me. 

0 commentaires