![](/img/trans.png)
[英]pass a javascript dictionary to an ASP.NET MVC action on controller
[英]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 + '¶m3=' + param3 + ... + '¶m10=' + param10 + '¶m11=' + 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.