gpt4 book ai didi

javascript - ASP.NET MVC - AJAX 提交表单不会触发适当的事件

转载 作者:行者123 更新时间:2023-11-30 11:37:19 25 4
gpt4 key购买 nike

在我的 personDetails.cshmtl 文件中,我有以下形式:

<form id="userUpdateForm" method="post">
<fieldset>
<legend>User Details</legend>
<input type="checkbox" name="authorisedCheckbox" value="Authorised" id="authCheck" />Authorised<br />
<input type="checkbox" name="enabledCheckbox" value="Enabled" id="eCheck" />Enabled<br />
</fieldset>
<fieldset>
<input type="hidden" name="personId" id="idCheck" value='@ViewData["personId"]'>
</fieldset>
<input type="submit" value="Save Changes" name="Save Changes">
<button type="button">Cancel</button>
</form>

然后我在页面下方使用 Javascript,如下所示:

$('#userUpdateForm').submit(function (e) {
var personDetails = {
Enabled: $('#eCheck').val(),
Authorised: $('#authCheck').val(),
Id: $('#idCheck').val()
};

$.ajax({
type: "POST",
url: '<%= Url.Action("submitForm", "Home") %>',
data: JSON(personDetails),
//contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
'@Url.Action("Index", "Home")';
},
error: function (result) {
alert("A problem occured when submitting the form.");
}
});

return false;
});

Javascript 旨在在点击提交按钮时触发。首先,“HomeController”中的“submitForm”方法被触发,然后它重定向回“HomeController”中的“Index”,它只输出一个 View 。

'submitForm' 当前类似于以下内容:

       [HttpPost]
public ActionResult submitForm(JsonResult jsonForm)
{
System.Diagnostics.Debug.WriteLine("made it here");
System.Diagnostics.Debug.WriteLine(jsonForm);
return View();
}

所以我的问题是:我在当前表单中缺少什么来触发 AJAX 事件?我相当确定它目前没有触发,因为没有警报,控制台上也没有从它应该触发的方法中输出任何内容。

我不想过多地更改表单本身,因为我目前有另一个 Javascript 可以在适当的时候将复选框设置为选中 onload。

编辑:我根据 Stephen Muecke 的建议修正了该方法。我在这里要做的是:点击按钮 -> 将详细信息提交到我的 submitForm 方法 -> submitForm 方法获取详细信息并在数据库中做一些事情 -> 完成后返回成功 -> 成功时,从 personDetails.cshtml 重定向到索引.cshtml.

最佳答案

您需要创建另一个类,该类应包含您发布到 submitForm 操作方法的所有属性。

当前您使用的 JsonResult 类不包含您尝试发布的属性,因此 ModelBinder 不会在此处绑定(bind)数据。引用 Model Binder ..伟大的文章......喜欢它......

   public class personDetails {
public string Enabled {get;set;}
public string Authorised {get;set;}
public string Id {get;set;}
}
[HttpPost]
public ActionResult submitForm(personDetails ObjpersonDetails)
{
System.Diagnostics.Debug.WriteLine("made it here");
System.Diagnostics.Debug.WriteLine(jsonForm);
return View();
}

关于javascript - ASP.NET MVC - AJAX 提交表单不会触发适当的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43914081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com