-1
var assetimage_id = $(this).closest(".assetImageWrapper").attr("data-assetimage_id");
var dataToSend = JSON.stringify({ "Asset_ID": assetimage_id, "Description": $(this).val() });
$.ajax({
url: "/api/Assets/UpdateDescription",
type: "PUT",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: dataToSend,
success: function (data) {
alert("success");
}
});
這裏是它應該打的方法。HTTP Put在MVC 4 Web API中不適用於我。我不斷收到404
[HttpPut]
public Asset UpdateDescription(int Asset_ID, string Description)
{
return new AssetsService().UpdateAssetDescription(Asset_ID, Description);
}
什麼看起來不重要?該方法在名爲Assets的Web API控制器中進行設置。所有其他方法都可以正常工作(GETS,POSTS)。這是當我通過在Visual Studio 2012中擊中F5來運行它時,所以沒有更改IIS配置。 Api路由是默認路由。
而且我的web.config支持所有動詞:
不確定你的意思。這個改動會是什麼? – Shane
你需要一個包裝器對象,比方說一個叫做AssetInfo的類,AssetId和Desription就是它的屬性。然後,您將修改您的操作簽名以訪問一個參數AssetInfo。由於這是一種複雜類型,因此默認情況下,Web API會從請求正文中讀取內容並將數據綁定到屬性。 –
另一個解決方案是簡單地在URL中傳遞你的'Asset_ID'和'Description',因爲Kiran提到這些參數是簡單類型的,並且默認綁定在Uri查詢字符串參數中(而不是在請求體中)。例如,您的ajax調用的url將如下所示:「/ api/Assets/UpdateDescription?AssetID =」+ assetimage_id +「&Description =」+ $(this).val(), –