我的代码将表单数据和列表框数据传递给控制器的代码有什么问题



任何人都可以帮助我找到我的代码将表单数据和列表框数据传递给Controller的代码是否出了问题?

这是AJAX代码:

$("#btnGetData").click(function () {

             var button1 = "getdata";
             var listItms = $('#ChooseRight').val();   // this is Lisbox field in Razor view
             var formData = $('#GenForm').serialize();  //the Form ID of razor view
             var wildcardprodtype = $('#WildCardProdType').val();
             $.ajax({
                type: 'POST',
                url: '/Report/LongRunningProcess',  //controller name
                 data: JSON.stringify({
                     button: button1,
                     viewModel: formData,
                     ChooseRight: listItms,
                     WildCardProdType: wildcardprodtype
                }),
                 contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                success: function (data) {
                }
            });

这是控制器,在调试中,我可以看到"按钮"的数据,WildcardProdType可以正确传递,但不能传递ViewModel和Choseright列表的数据。有什么原因?

public ActionResult LongRunningProcess(string button, ReportViewModel viewModel, List<string> ChooseRight, string WildCardProdType)
{
   ....

这是@htmlbegin表单标头:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "GenForm" } ))
{

顺便说一句,当前的剃须刀视图使用reportViewModel如下:

@model MVCPROD.Models.ViewModels.ReportViewModel

使用serializeArray()代替serialize(),以便您可以在"序列化数组"中包含更多项目。

$("#btnGetData").click(function () {                    
                var button1 = "getdata";
                var listItms = $('#ChooseRight').val();  
                var wildcardprodtype = $('#WildCardProdType').val();
                var formData = $('#GenForm').serializeArray();                     
                //Below three lines are not required if ChooseRight, WildCardProdType elements are inside the form
                formData.push({ name: 'button', value: button1 });
                formData.push({ name: 'listItms', value: listItms });
                formData.push({ name: 'wildcardprodtype', wildcardprodtype });
                $.post(
                    '/Account/LongRunningProcess',
                    formData,
                    function (response) {
                    }
                );
            });

最新更新