MVC Http PUT не работает - PullRequest
0 голосов
/ 25 мая 2018

при использовании сообщения 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;
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Код 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)
            }
        });
    })
0 голосов
/ 25 мая 2018

Возможно, проблема связана с вашей конфигурацией 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...