ASP.NET MVC Ajax JSON jQuery не будет отправлять параметры в `ActionResult` - PullRequest
0 голосов
/ 05 апреля 2019

Я создал наполовину работающий ajax-код, используя jQuery и JSON, но я не могу получить параметры данных из запроса POST, хотя я пытался отправить его несколькими различными способами (сначала как объект внутри data: {} объекта, тогда как просто строка), но ничего не получалось. Вот код:

C #, ManageController.cs:

public ActionResult SubmitForm(string typeAction)
        {
            string message = (int.Parse(typeAction) * 20).ToString();//Exception: can't convert null string to int
            return Json(new  {Message = message, JsonRequestBehavior.AllowGet}); 
        }

JavaScript (+ jQuery, конечно), AppScripts.js:

function AjaxPost(typeofAction, ActionUrl) {    
    $.ajax({
        type: "POST",
        url: ActionUrl,
        data: { typeAction: JSON.stringify(typeofAction) },
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function () {
            return true;
        },
        error: function (xhr, textStatus, errorThrown) {
            console.error(textStatus + "\n" + errorThrown);
        }
    });
    return false;
}

который вызвал с кнопки:

<button onclick="AjaxPost($('#SimpleActionId').value, '/manage/SubmitForm')">Go!</button>

для результатов вызывается действие IS, и я вижу, что отладчик выполняет его до тех пор, пока не будет сгенерировано исключение, поскольку не может преобразовать пустую строку в int. параметр даже не попадает в ActionResult SubmitForm, но он вызывается, и все значения отправляются из данных. спасибо.

1 Ответ

2 голосов
/ 05 апреля 2019

1) Измените свой вызов AJAX так, чтобы он выглядел следующим образом:

function AjaxPost(typeofAction, ActionUrl) {    
    $.ajax({
        type: "POST",
        url: ActionUrl,
        data: JSON.stringify({ typeAction: typeofAction }),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            console.log(data);
            return true;
        },
        error: function (xhr, textStatus, errorThrown) {
            console.error(textStatus + "\n" + errorThrown);
        }
    });
    return false;
}

2) Создайте модель C #:

public class ActionType
{
    public string typeAction { get; set; }
}

3) Измените метод действия так, чтобы он выглядел следующим образом:

public ActionResult Edit(ActionType RequestModel)
{
    string message = (int.Parse(RequestModel.typeAction) * 20).ToString();
    return Json(new  {Message = message }, JsonRequestBehavior.AllowGet); 
}

Теперь уместно связывание модели , и вы получите typeAction в свойство RequestModel.typeAction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...