Я пытаюсь выполнить отправку формы моему контроллеру через jQuery Ajax. Следующий код работает по большей части, однако параметр ThreadId не передается. Если я вызываю контроллер напрямую, не используя jQuery, он передается, но при использовании jquery я не вижу ThreadId после form.serialize(). Каким будет самый простой способ передать параметры (например, ThreadId) в сообщение формы jQuery?Передача параметров при отправке формы через jQuery в 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;
};
КОНТРОЛЛЕР
[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");
}
Спасибо! Правильно, у действия есть правильный URL. Однако по какой-то причине вместо моего метода AddComment вызывается метод Index. Все еще пытаюсь понять, почему. – Prabhu
Nevermind, я делал form.action, когда это должно было быть sender.action. Спасибо за вашу помощь. – Prabhu
Btw, у меня есть две кнопки в форме, и когда я делал это без jquery, я использовал атрибут name на кнопке ввода, чтобы выяснить, какая кнопка отправила запрос на конец контроллера. Любая идея, как я могу это сделать с помощью jquery? – Prabhu