我从ajax传递给MVC控制器的参数是什么

时间:2016-12-30 20:39:43

标签: javascript ajax asp.net-mvc

如何知道在传递javascript对象时要创建的参数。

请考虑

var all = [];
//loop through each instrument
for (var i = 0; i < 3; i++) {
    var txt = getThis(i);//int
    var detail =getThat(i);//string

    all.push({
        'this': txt,
        'that': detail
    });
  }  
    ajaxCall.getNow("myUrl", {
        all
    };

ajaxCall.getNow只需使用get调用典型的$ ajax。

问题是我的MVC控制器需要什么参数。

如果我使用object然后它可以工作,但我不确定我需要做什么才能使用该对象。作为一个对象,它相当无用。

如果我尝试tuple<in, string>它无法正常工作

EG

public JsonResult MyFunction(Tuple<int,string,string,double,double,string,int> all)//this fails


public JsonResult MyFunction(object all)//this works but I only have an ojbect, I@d like to have something like the tuple to work with

那我怎么知道在我的MVC控制器中设置什么类型的参数呢?

1 个答案:

答案 0 :(得分:1)

您的代码将在您的ajax调用中发送此类数据

{
    "all": [
        {
            "this": 0,
            "that": "some"
        },
        {
            "this": 1,
            "that": "some"
        },
        {
            "this": 2,
            "that": "some"
        }
    ]
}

您可以创建此数据的C#表示。

public class All
{
    public int @this { get; set; }  //because this is a reserved keyword
    public string that { get; set; }
}

public class RootObject
{
    public List<All> all { get; set; }
}

您可以使用RootObject作为参数

public ActionResult SomeActionName(RootObject model)
{

}

请记住,this是一个C#关键字,所以尽量避免这种情况。可以用myThis

替换它