J'essaie de soumettre un formulaire à mon contrôleur via jQuery Ajax. Le code suivant fonctionne pour la plupart, cependant, le paramètre ThreadId n'est pas transmis. Si j'appelle le contrôleur directement sans utiliser jQuery, il est transmis, mais lors de l'utilisation de jquery, je ne vois pas le ThreadId après form.serialize(). Quel serait le moyen le plus simple de transmettre des paramètres (comme ThreadId) à un formulaire jQuery?Passer des paramètres lors de la soumission d'un formulaire via jQuery dans ASP.NET MVC
ASPX
<% Html.BeginForm("AddComment", "Home", new { ThreadId = Model.Id },
FormMethod.Post, new { @id = "AddComment" + Model.Id.ToString(),
@onsubmit = "javascript:AddComment(this);return false" }); %>
<%: Html.TextBox("CommentText", "", new { @class = "comment-textbox" })%>
<input id="Comment" type="submit" name="submitButton" value="Post Comment" />
<% Html.EndForm(); %>
JavaScript
AddComment = function (sender) {
var form = $(sender);
var data = form.serialize();
$.ajax({
type: "POST",
url: "/Home/AddComment",
data: data,
dataType: "html",
success: function (response) {
alert(response);
},
error: function (error) {
alert(error);
}
});
return false;
};
CONTROLLER
[HttpPost]
public ActionResult AddComment(string submitButton, Comment comment)
{
comment.CreatedDate = DateTime.Now;
comment.PosterId = LoggedInUser.Id;
_repository.AddComment(comment);
_repository.Save();
if (Request.IsAjaxRequest())
{
return View("Comment", comment);
}
else
return RedirectToAction("Index");
}
Merci! Vous avez raison l'action a l'URL correcte. Cependant, pour une raison quelconque, au lieu d'appeler ma méthode AddComment, ma méthode Index est appelée. J'essaie toujours de comprendre pourquoi. – Prabhu
Peu importe, je faisais form.action, alors que ça aurait dû être sender.action. Merci de votre aide. – Prabhu
Btw, j'ai 2 boutons dans le formulaire et quand je le faisais sans jquery j'ai utilisé l'attribut de nom sur le bouton d'entrée pour savoir quel bouton a envoyé la demande à la fin du contrôleur. Une idée de comment je peux le faire avec jquery? – Prabhu