c# - ajax 调用后 Controller 中的 Formcollection 输入值为空

标签 c# javascript jquery ajax asp.net-mvc

我在使用 IE 和 FF 时遇到了问题;我的应用程序正在与 Google Chrome 配合使用。

我正在将模型绑定(bind)到 ASP.NET MVC 中的 View 我在表单(和其他一些控件)中有一个表行。我用 ajax 调用替换了单击按钮时表行的内容。 ajax 调用后,如果我提交如下所示的表单,我无法从 Controller 方法获取 formcollection 输入。我在ajax调用之前提交表单没有问题。

更新表格行内容的js代码:

function reloadCriteriaTable(unitID, criteriaCode, icerikRowSpan, icerikOnay) {
$.ajax({
    type: "GET",
    url: 'ApproveParts/ReloadCriteria',
    data: { contentID: $('[name="contentID"]').val(), unitID: unitID, criteriaCode: criteriaCode, selectedValue: $("#validator_" + criteriaCode).val(), icerikRowSpan: icerikRowSpan, icerikOnay: icerikOnay },
    cache: false,
    type: "POST",
    success: function (data, textStatus, XMLHttpRequest) {
        $('#tr_' + criteriaCode).replaceWith(data);
        $('#continueBtn').on('click', function () {
            $('#form_3').submit();
            return false;
        });
    },
    error: function (xhr, status, error) {
        alert(xhr + ' ' + status + " : " + error);
    }

});
}

Onclick函数:

$(document).on("click", ".btnSubmitCriteria", function () {
    $('#form_3').submit();
    return false;
});

Controller 方法:

[HttpPost]
public ActionResult CourseCriteriaApprovment(FormCollection collection)
{

}

最佳答案

首先要说明为什么您在 ajax 调用中同时提到了“GET”和“POST”类型。仅使用“POST”。

试试这个

$.ajax({
    type: 'POST',
    url: '/ApproveParts/ReloadCriteria',
    dataType: 'json',
    contentType: 'application/json',
    data : return JSON.stringify({
            contentID: $('[name="contentID"]').val(),
            unitID: unitID,
            criteriaCode: criteriaCode,
            selectedValue: $("#validator_" + criteriaCode).val(),
            icerikRowSpan: icerikRowSpan,
            icerikOnay: icerikOnay
        });
});

在您的 Controller 操作中接受一个类而不是 FormCollection。该类的所有属性定义与您在 ajax 调用中发送的属性相同。

关于c# - ajax 调用后 Controller 中的 Formcollection 输入值为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22662307/

相关文章:

c# - 将未加密的标签数据附加到加密文件

c# - 在完成特定任务之前禁用 C# 控制台中的输入

c# - 用字母变量替换数学方程式中的 float

javascript - 获取 iframe 加载元素

javascript - HTML5 手机应用程序 - 重新缩放视网膜

jquery - 如何创建附件中的样式

javascript - 选择更改仅选择两次

c# - 在犀牛中混合 stub 和模拟

javascript - 表单字段未绑定(bind)到 typescript 变量

javascript - 回调函数可以是下一行代码吗