JQuery Ajax Вызов метода действия ASP.NET MVC - «Внутренняя ошибка сервера?» - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть простой метод действия, который принимает 2 параметра, но когда я вызываю его с помощью jQuery Ajax в инструменте разработчика Chrome и вкладке «Сеть»> Xhr> Запросить код: 500 Внутренняя ошибка сервера ....

Я пытаюсь выяснить фактическую ошибку, но не могу ее получить?

ПРИМЕЧАНИЕ: когда я выбрасываю точку останова в actionMethod и когда я нажимаю на кнопку, вызов ajaxвыполняется, но во время я не могу получить контроль и точку останова, так что это означает, что вызов ajax также не достигает метода действия.

ActionMethod:

[HttpPost]
public ActionResult LikePost(int userId, int entryId)
{
   return Content("User Id  Is  : " + userId + "Post Id  is : " + entryId);
}

jQuery:

jQuery.ajax({
    url: "@Url.Action("LikePost", "Home")",
    method: "POST",
    data: {
       "userId": CurrentButton.attr("data-UserId"),
       "entryId": CurrentButton.attr("data-entryId")
    },
    success: function () {
       console.log("Succeded");
    },
    error: function () {
       console.log("Failed.");
   }
});

Я застрял в последние 2 с лишним часа ... Реальный сценарий немного отличается в моем проекте, но проблема, с которой я сталкиваюсь, именно эта.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Когда вы отправляете данные в контроллер с помощью Ajax, вы можете использовать только аннотации HttpPut или HttpPost.В обоих случаях на стороне контроллера вы должны использовать DTO (Data Transfer Object) в качестве параметра.Так что сделайте класс (DTO Class) и ваша ошибка исчезнет.

0 голосов
/ 12 февраля 2019

Вы используете метод POST, тогда вам нужно использовать только одну переменную для действия на стороне сервера.

Вы можете создать подобный класс:

public class User
{
    public int UserId { get; set; }
    public int EntryId { get; set; }
}

После того, как вам нужно изменитьдействие MVC:

[HttpPost]
public ActionResult LikePost(User user)
{
    return Content("User Id  Is  : " + user.userId + "Post Id  is : " + user.entryId);
}

и отправьте эти данные в формате JSON:

var data = {
    userId: CurrentButton.attr("data-UserId"),
    entryId: CurrentButton.attr("data-entryId")
};
jQuery.ajax({
    url: "@Url.Action("LikePost", "Home")",
    method: "POST",
    data: JSON.stringify(data),
    success: function () {
       console.log("Succeded");
    },
    error: function () {
       console.log("Failed.");
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...