我們正在移動我們的服務器端邏輯,以通過API調用。我無法從我的AJAX調用中觸發該操作。任何人都可以告訴我什麼是我的代碼錯誤,爲什麼我得到一個錯誤,說它無法在控制器中找到操作?無法從AJAX發佈請求中觸發API控制器操作
控制器動作
[System.Web.Http.HttpPost]
public HttpResponseMessage assignViews(string selectedViews, string volIds)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
AJAX請求
self.saveViews = function() {
var data = {
selectedViews: self.selectedViews().toString(),
volIds: populateSelectedVolIds().toString()
};
var jsonData = ko.toJSON(data);
$.ajax({
url: "../../ja/ClientView/assignViews",
type: "POST",
contentType: "application/json; charset=utf-8",
cache: false,
data: jsonData,
success: handleViewsForClientSuccess,
error: handleEditViewsErrors
});
};
路由
public override void RegisterArea(AreaRegistrationContext context)
{
RouteTable.Routes.MapHttpRoute(
"ja",
"ja/{controller}/{id}",
new { action = "Index", id = UrlParameter.Optional, version = UrlParameter.Optional }
);
}
[1]你的網址應該是「../../ja/ClientView」所以不要不包括assignViews(動作名稱),因爲它不是你路由的一部分。 [2]最佳做法是使用模型而不是字符串作爲參數。如果您使用模型,則綁定將正常工作。另一個選擇是使用[FromBody]屬性。 –
關閉操作名稱無效。我將嘗試創建一個模型對象並將其設置爲參數。希望這會起作用。 –
創建一個模型就像一個魅力。請讓這個答案,我可以接受它。謝謝你的幫助! –