Javascript 将空数据从$.post发送到控制器模型

Javascript 将空数据从$.post发送到控制器模型,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,我的模型- public class Phasessfilter { public string Searchterm {get;set;} public string ob1 {get;set;} public string ob2 {get;set;} public string ob3 {get;set;} public List<string> ob4 { get; set; } public List<string&g

我的模型-

 public class Phasessfilter
{
    public string Searchterm {get;set;}
    public string ob1 {get;set;}
    public string ob2 {get;set;}
    public string ob3 {get;set;}
    public List<string> ob4 { get; set; }
    public List<string> ob5 { get; set; } 
}
这是我的剧本

    var recr = "";
    var study = "";
    var results = "";
    var phases1 = [];
    var fund = [];
  var values =  { Searchterm: Searchterm, ob1: recr, ob2: study, ob3: results, ob4: phases1, ob5: fund }

    $.post("GtRlts", values, function (abc) {

   }
所以我得到了Searchterm、ob1、ob2、ob3的值,但我得到了ob4和ob5的空值。为什么列表不接受数组值,或者我做错了什么。 另外,我不想使用$.ajax将您的模型更改为

public class Phasessfilter
{
    public string Searchterm {get;set;}
    public string ob1 {get;set;}
    public string ob2 {get;set;}
    public string ob3 {get;set;}
    public List<string> ob4 { get; set; }
    public List<string> ob5 { get; set; } 
    public Phasessfilter()
    {
        ob4 = new List<string>();
        ob5 = new List<string>();
    }
}
公共类阶段过滤器
{
公共字符串搜索项{get;set;}
公共字符串ob1{get;set;}
公共字符串ob2{get;set;}
公共字符串ob3{get;set;}
公共列表ob4{get;set;}
公共列表ob5{get;set;}
公共相位过滤器()
{
ob4=新列表();
ob5=新列表();
}
}
将您的型号更改为

public class Phasessfilter
{
    public string Searchterm {get;set;}
    public string ob1 {get;set;}
    public string ob2 {get;set;}
    public string ob3 {get;set;}
    public List<string> ob4 { get; set; }
    public List<string> ob5 { get; set; } 
    public Phasessfilter()
    {
        ob4 = new List<string>();
        ob5 = new List<string>();
    }
}
公共类阶段过滤器
{
公共字符串搜索项{get;set;}
公共字符串ob1{get;set;}
公共字符串ob2{get;set;}
公共字符串ob3{get;set;}
公共列表ob4{get;set;}
公共列表ob5{get;set;}
公共相位过滤器()
{
ob4=新列表();
ob5=新列表();
}
}

嘿,编写的代码非常好,您只需使用其中的值进行测试,就可以正常工作

下面是示例Js代码

 var searchterm = "test1";
    var recr = "test2";
    var study = "test3";
    var results = "test4";
    var phases1 = ["Test5","Test6"];
    var fund = ["Test6", "Test7"];
    debugger;
    var values = { Searchterm: searchterm, ob1: recr, ob2: study, ob3: results, ob4: phases1, ob5: fund }

    $.post(path + "/Dashboard/Home/GtRlts", values, function (abc) {

    });
其余代码的引用的输出是相同的


嘿,编写的代码非常好,您只需使用其中的值进行测试,它就可以正常工作

下面是示例Js代码

 var searchterm = "test1";
    var recr = "test2";
    var study = "test3";
    var results = "test4";
    var phases1 = ["Test5","Test6"];
    var fund = ["Test6", "Test7"];
    debugger;
    var values = { Searchterm: searchterm, ob1: recr, ob2: study, ob3: results, ob4: phases1, ob5: fund }

    $.post(path + "/Dashboard/Home/GtRlts", values, function (abc) {

    });
其余代码的引用的输出是相同的


您刚刚定义了数组变量,所以它得到了空值

var phases1 = [];
var fund = [];
您必须在其中添加项目

var phases1 = [1,2];
var fund = [3,4];

您刚刚定义了数组变量,所以它得到了空值

var phases1 = [];
var fund = [];
您必须在其中添加项目

var phases1 = [1,2];
var fund = [3,4];

您必须将列表设置为参数。List JOP您必须将List设置为参数。列表jop@HimaanSingh我正在尝试它,并且得到count=0而不是null。你还错过了什么吗?@himaansing我正在尝试,我得到的计数=0不是空的。您是否遗漏了其他内容?发送phases1=[]并在debug ob4中检查它是否为null或不在服务器中。是的,它当然会为null,因为按照另一个答案中的说明,在构造函数中初始化所有列表属性是一个好的做法。但是,无论哪种方式,它都不会在反序列化JSON对象时引起问题。因此,为了精确地避免null,我们可以定义PhaseSFilter,如yousend phases1=[]所述,并在debug ob4中检查它在服务器中是否为null。是的,它当然会,作为空值出现,因为按照另一个答案中的说明,在构造函数中初始化所有列表属性是一种很好的做法。但是,无论哪种方式,它都不会在反序列化JSON对象时引起问题。因此,为了避免null,我们可以按照您的说明定义Phasessfilter