gpt4 book ai didi

jquery - 从 ajax 发布 MVC Razor 表单

转载 作者:行者123 更新时间:2023-12-01 06:16:49 25 4
gpt4 key购买 nike

在部分 View 中,有一个使用 Html.Helper 类(TextBoxFor、DropDownListFor 等)的表单(@addName)。

@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" })
}

我拦截提交以便异步发布和检索新数据,divId 是整个部分 View 的 div。

    $('#@saveName').click( function (event) {
event.preventDefault();
$.ajax({
url: '@Url.Action("SaveADP", "Dispense")',
type: 'POST',
data: $('#@addName').serialize(),
success: function (data) {
$('#@divId').html(data);
}
})
})

正在调用 SaveADP 操作,但唯一具有设置值的字段是 EndValue,其他字段(ModuleTypeId 和 DPId)具有默认值而不是其表单值。我在这里做错了什么?

最佳答案

与 ASP.NET MVC 无关的方法是为每个元素提供 id,然后将其作为 JSON 传递给 Controller ​​。作为它的一部分,它更适合您的需求,因为可以在 ajax 请求的回调中获取响应。

示例

var DTO = {
newDP: {
StartValue: $("#id_of_elm").val(),
EndValue: $("#newName").val(),
Duration: $("#id_of_elm").val(),
ModuleTypeId: $("#id_of_elm").val(),
DPId: $("#id_of_elm").val()
}
};

$('#saveName').click(function (event) {
event.preventDefault();
$.ajax({
contentType: 'application/json'
data: JSON.stringify(DTO),
type: 'POST',
url: '@Url.Action("SaveADP", "Dispense")'
}).done(function (data) {
$('#divId').html(data);
});
});

不相关但很重要的一点

  1. 请使用#saveName代替#@saveName,使用#divId代替#@divId<
  2. 请注意,jqXHR.done() 是在 $.ajax 中处理成功回调的新方法

关于jquery - 从 ajax 发布 MVC Razor 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800343/

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