我想通過ajax調用我的控制器傳遞一些複雜的數據。通過ajax發送複雜的對象到控制器
我的控制器的操作方法。
public ActionResult CalculatePremium(QuoteDetailsViewModel quoteDetails)
{
ViewBag.Message = "Your application description page.";
return View();
}
Javascript代碼:
quoteDetails = {
StartDate: '10-10-2016',
Drivers: [{ Name: 'Test', Occupation: 'Test2',
DateOfBirth: '10-10-1985'}, { Name: 'Test2', Occupation: 'Test4',
DateOfBirth: '10-10-1945' }],
Claims: ['5-5-2010']
};
$.ajax({
type: "GET",
url: '/Home/CalculatePremium',
contentType: "application/json; charset=utf-8",
data: quoteDetails,
dataType: "json",
success: function() { alert('Success'); },
error: function (xhr, status, error) { alert('Error:'); }
});
視圖模式(不用擔心字符串被用於日期時間 - 它只是用於測試)
public class QuoteDetailsViewModel
{
public string StartDate { get; set; }
public List<Driver> Drivers { get; set; }
public List<string> Claims { get; set; }
}
public class Driver
{
public string Name { get; set; }
public string Occupation { get; set; }
public string DateOfBirth { get; set; }
}
當我打電話的動作方法對象被填充以下內容:
{MotorInsuranceCalculator.Models.QuoteDetailsViewModel}
Claims: null
Drivers: Count = 2
StartDate: "10-10-2016"
quoteDetails.Drivers
Count = 2
[0]: {MotorInsuranceCalculator.Models.Driver}
[1]: {MotorInsuranceCalculator.Models.Driver}
quoteDetails.Drivers[0]
{MotorInsuranceCalculator.Models.Driver}
DateOfBirth: null
Name: null
Occupation: null
quoteDetails.Drivers[1]
{MotorInsuranceCalculator.Models.Driver}
DateOfBirth: null
Name: null
Occupation: null
任何幫助解決這個將不勝感激。
'data:JSON.stringify({quoteDetails:quoteDetails})',它需要是一個POST,而不是一個GET –
當我將其更改爲POST時,出現內部服務器錯誤,爲什麼? – Grentley
你必須爲你的方法使用'[HttpPost]'動詞。 –