Affichage MVC, Razor forme de l'ajax
À l'intérieur d'une Vue Partielle, il y a un formulaire(@addName) à l'aide de Html.Helper classes (TextBoxFor, DropDownListFor, etc).
@model Models.ADP
using (@Html.BeginForm(new { id= @addName}))
{
@Html.TextBoxFor(model => model.EndValue, new { id = @newName, size = "5", style = "margin-right: 10px" })
@Html.HiddenFor(model => model.ModuleTypeId, new { @Value = @ViewBag.ModuleId }
@Html.DropDownListFor(model => model.DPId, @dpList, "Choose an Option...", new { @class = "select" })
}
Je intercepter le soumettre afin d'afficher et de consulter de nouveau les données de manière asynchrone, divId est la div pour l'ensemble de la Vue Partielle.
$('#@saveName').click( function (event) {
event.preventDefault();
$.ajax({
url: '@Url.Action("SaveADP", "Dispense")',
type: 'POST',
data: $('#@addName').serialize(),
success: function (data) {
$('#@divId').html(data);
}
})
})
La SaveADP action est appelée, mais le seul champ avec une valeur de consigne est EndValue, les autres champs(ModuleTypeId et DPId) ont les valeurs par défaut à la place de leurs valeurs d'un formulaire. Ce que je fais mal ici?
- Comment votre action ressembler?
public ActionResult SaveADP(ADP newDP)
est la signature, ADP a les champs StartValue, EndValue, ModifiedDate, DPId, ModuleTypeId, et de la Durée. Je n'ai pas été au-delà encore depuis newDP n'est pas construit avec les valeurs correctes.
Vous devez vous connecter pour publier un commentaire.
L'ASP.NET MVC agnostique façon de le faire est de donner l'id pour chaque éléments et ensuite de le passer le contrôleur en JSON. Comme une partielle, il serait mieux adapté à votre besoin, car la réponse pourrait être récupérée sur le rappel de la requête ajax.
Exemple
Non, mais des points importants
#saveName
au lieu de#@saveName
et#divId
au lieu de#@divId
jqXHR.done()
est la nouvelle façon de gérer le succès de rappel dans$.ajax
Première,
.serialize()
exclut les champs cachés.Deuxième, vous devriez vérifier si le code HTML de votre liste déroulante s'adapte les règles suivantes pour "succès les contrôles".
Il y a une citation de La Documentation de l'API:
Succès les contrôles:
serialize()
pour éviter ses limites.ci-dessous est le code fixe. Je n'ai pas essayé, mais doit être au travail: