MVC 4 - jQuery Ajax Post Complet des Données du Formulaire Méthode Spécifique
Je suis vraiment curieux. Est-il possible d'avoir un jQuery Ajax en post-opératoire, envoyer l'ensemble des données de formulaire, sérialisé ou pas, à un MVC 4 méthode qui a des paramètres spécifiques avec le même nom que le formulaire de saisie des Id, tout en excluant les éléments qui ne correspondent pas?
MVC 4 Méthode de Contrôleur
[HttpPost]
public JsonResult DoWork(string companyName, string firstName, string lastName, string email)
{
//.. do stuff and return result...
}
HTML
<form id="MyForm" method="post">
<input id="CompanyName" name="CompanyName" type="text"/>
<input id="FirstName" name="FirstName" type="text"/>
<input id="LastName" name="LastName" type="text"/>
<input id="Email" name="Email" type="text"/>
<input id="Var1" name="Var1" type="text"/>
<input id="Var2" name="Var2" type="text"/>
</form>
Ajax de jQuery
$.ajax({
type: 'post',
dataType: 'html',
url: '/Controller/DoWork',
data: $('#MyForm').serialize()
});
Si il n'est pas possible de sortir de la boîte, quelqu'un aurait-il quelques idées de base que j'ai pu examiner sur comment faire ça? Je tiens à rendre plus difficiles pour quelqu'un de comprendre à mes appels de méthode, sans leur donner l'exacte des noms de paramètres et de valeurs qui sont nécessaires pour rendre la méthode de travail.
- Peut-être vous être un peu plus précis sur la partie où l'on vous dit: "tout en excluant les éléments qui ne correspondent pas"?
- Si vous remarquez dans le code html il y a deux entrées nommé Var1 et Var2. Ceux qui n'obtiendraient pas de "transformés" lors de l'invocation de la méthode de contrôleur car il n'y a pas de paramètres avec les mêmes noms.
Vous devez vous connecter pour publier un commentaire.
Oui c'est possible. Mais vous n'oubliez pas que vous pouvez toujours accéder à ces données publiées par le
Reques
objet. Vous pouvez effectivement supprimer tous les arguments de votre méthode de contrôleur et vous pouvez toujours afficher les données. Le réel avantage d'avoir des arguments dans un contrôleur de cette méthode est que si le type de l'argument est un objet - un viewmodel. Un viewmodel qui a dataannotations de sorte que vous pouvez faire de la validation. Mais il faut noter que il n'est pas nécessaire, c'est juste une technique.Une autre chose à noter est que si vous avez quelque chose comme
et vous transmettre uniquement les données pour
first
etlast
votre post action va provoquer une exception. L'exception sera sur leid
paramètre que le contrôleur s'attendre à recevoir une valeur. Maintenant, si vous transmettez les valeurs defirst
,last
etid
arguments mais laissez de côtéid2
, alors aucune exception ne se produisent queid2
aura une valeur null.De sorte que votre posté exemple de travail. Et vous pouvez obtenir les valeurs de
Var1
etVar2
en faisantRequest["Var1"]
etRequest["Var2"]
, si l'on souhaite obtenir leurs valeurs. Vous pouvez les ignorer, bien sûr.Pouah j'espère que vous n'avez pas recours à l'aide de la accepté de répondre ici, en tant que moyen de le faire. Cette question est en fait une copie, et la et la réponse ici est la meilleure façon de faire ce que vous voulez:
Passage de paramètres lors de la soumission d'un formulaire via jQuery dans ASP.NET MVC