当使用HTTP帖子更新我的次记录时,例如它可以正常工作,但是当我使用put时却没有。 我已经阅读了一些关于CRUD和HTTP方法的文章,并且已知HTTP PUT用于更新部分,它是仅用于WEB API还是我可以在我的.net mvc项目中使用它并且我做错了什么?这是我的代码
var times = GetTimes(); // times array object
var enrollmentId = $('#EnrolledSubject').data('id');
$.ajax({
contentType: 'application/json; charset=utf-8',
url: "/Subjects/UpdateTimes?enrollmentId="+enrollmentId,
type: "PUT",
dataType: "json",
data: JSON.stringify({ 'times': times}),
success: function (data) {
console.log(data);
},
error: function (x, y, z) {
console.log('error ' + y);
OnAJAXError(x, y, z);
}
});
和MVC控制器主题
[Route("UpdateTimes")]
[HttpPut]
public bool UpdateTimes(List<Time> times)
{
return true;
}
答案 0 :(得分:1)
问题可能来自您的iis配置。您可以尝试在web.config中添加它:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
答案 1 :(得分:0)
c#代码对我来说并没有改变,所以你可以保留原样。
就aJax电话而言,
删除dataType,contentType和JSON.stringify()。我的下面。
我确实根据你给我的时间模型创建了时间模型。我希望我的数据类型正确
public class Time
{
public int Day { get; set; }
public string Code { get; set; }
public string Room { get; set; }
public bool ViewOnSchedual { get; set; }
}
javascript:
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
function GetTimes() {
var arr = [];
for (var i = 10; i--;) {
var d = new Date();
arr.push({
Day: getRandomInt(365),
Period: "abc_" + i,
Room: "room_" + i,
ViewOnSchedual: (i % 2 === 0) ? true : false
})
}
return arr;
}
$("#put_time").off().on("click", function () {
var times = GetTimes();
$.ajax({
url: "/Home/UpdateTimes",
type: "PUT",
data: {"times": times},
success: function (data) {
console.log("success")
console.log(data);
},
error: function (x, y, z) {
console.error("there was an error")
console.log(x, y, z)
}
});
})