ASP.NET CORE Ajax публикует дополнительные параметры с моделью представления - PullRequest
0 голосов
/ 16 октября 2019

В моем проекте (ASP.NET Core 2.2. MVC) я пытаюсь сделать ajax-пост с дополнительными параметрами для модели представления. Форма на странице имеет идентификатор = 'frmMain'.

Мой js выглядит так:

//post
var data = {
    model: $("#frmMain").serialize(),
    passtest: 'test'
};

$.ajax({
    type: 'post',
    url: url,
    data: JSON.stringify(data),
    dataType: 'json',
    success: function () {
    //alert('form was submitted');
}
}).done(function (result) {

    if (result.status === "success") {

        //some code here
    }
    } else {
        //some code here
    }
});

Мои действия контроллера выглядят так:

public IActionResult DoSomething(MyModel model, string passtest)
{
    //some action code here
}

Теперь пост работает, но в моем действии контроллера только «модель» заполнена данными. Переменная "passtest" равна нулю. Также нет «passtest» в «модель».

Что я делаю не так?

Примечание: я нашел обходной путь с заполнением скрытых полей (и добавлением их в модель представления), но простая передача нескольких параметров в самом посте кажется более практичной...

1 Ответ

1 голос
/ 17 октября 2019

вы можете добавить его к URL, используя обозначение запроса.

url = url + '?passtest=' + myVal

Допустим, если ваш myVal содержит специальные символы, такие как , / ? : @ & = + $ #

Затем вы хотите закодировать его, чтобы они не анализировались как частьобозначение URL:

url = url + '?passtest=' + encodeURIComponent(myVal)

...