簡體   English   中英

如何將元組從 javascript 傳遞到 ASP.NET MVC 控制器操作

[英]How to pass a tuple from javascript to ASP.NET MVC controller action

我在 javascript 中有以下元組,用於對某種數據進行分組:

var myTuple = {
  item1 : value1,
  item2 : value2,
  item3 : value3
};

現在我想將它作為最后一個參數傳遞給 ASP.NET MVC 控制器操作。 這個 ASP.NET MVC 控制器操作已經傳遞了很多參數。 我正在使用如下所示的 ajax 調用:

$.ajax({
    url: '@Url.Action("MyActionController", "MyController")?Param1=' + $('#Object1').val() + '&Param2=' + param2 + '&param3=' + param3 + ... + '&param10=' + param10 + '&param11=' + myTuple,
    type : "POST",
    async: false,
    dataaType: "JSON",
    success: function (result) {
        // my stuff
    },
});

我該怎么做? 或者有沒有其他更好的方法來做到這一點?

在我看來,傳遞了這么多參數,最好創建一個對象。 所以你的控制器應該只需要一個對象——我經常制作一個適合我需要的請求模型。 該模型將包含一個與元組中的結構相匹配的對象。

在您的 JS 端,我會為您的模型創建一個類似的對象,而不是像這樣將其放入您的 url 中,我會將其作為調用data的一部分,因為您已經說過要發送json並且類型是post

$.ajax({
    url: '@Url.Action("MyActionController", "MyController"),
    type : "POST",
    data: yourRequestObject, //contains the Tuple
    async: false,
    dataType: "json",
    success: function (result) {
        // my stuff
    },
});

當然,如果您需要在查詢字符串中保留一些也可以使用。

編輯:按要求示例

你的 JS 可能是這樣的:

let tuple = {
  Item1 : value1,
  Item2 : value2,
  Item3 : value3
};

let requestObject = {
  SomeThing : someValue,
  MyTuple : tuple
};

$.ajax({
    url: '@Url.Action("MyActionController", "MyController"),
    type : "POST",
    data: requestObject, 
    async: false,
    contentType: 'application/json', 
    dataType: "json",
    success: function (result) {
        // my stuff
    },
});

您的 C# 可能如下所示:

public ActionResult MyActionController(MyRequestModel request)
    {
        // Your Tuple would be accessible here via request.MyTuple
        // Do stuff
        // ... 
        return View();
    }

    public class MyRequestModel 
    {
        public string SomeThing { get; set; }
        public MyTuple MyTuple { get; set; }
    }

    public class MyTuple 
    {
        public string Item1 { get; set; }
        public string Item2 { get; set; }
        public string Item3 { get; set; }
    }

請注意,將 Action 期望的對象的結構與您發送的對象相匹配很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM