ajax调用后,控制器中的Formcollection输入值为空

本文关键字:输入 Formcollection 调用 控制器 ajax | 更新日期: 2023-09-27 17:53:27

我遇到了IE和FF的问题;我的应用程序正在与谷歌浏览器工作。

我在ASP中将一个模型绑定到一个视图。NET MVC我有一个表格内的行(和其他一些控件)。我用ajax调用替换按钮单击上的表行内容。ajax调用后,如果我提交表单如下所示,我不能从控制器方法获得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;
});
控制器方法:

[HttpPost]
public ActionResult CourseCriteriaApprovment(FormCollection collection)
{
}

ajax调用后,控制器中的Formcollection输入值为空

首先说明为什么在ajax调用中同时提到键入"GET"answers"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
        });
});

在你的控制器动作中接受一个类而不是FormCollection。其中类的所有属性定义与您在ajax调用中发送的属性相同。