Передача данных из JavaScript в MVC Controller с несколькими параметрами - PullRequest
1 голос
/ 17 июня 2019

У меня есть Controller OrderAssignmentRuleSet со следующим ActionResult Методом

public ActionResult OrderAssignmentRuleSetEdit(string customerId, string Name= null, List<string> listOfItems = null)
        {

        }

И ниже мой Javascript для передачи данных в мой выше controller метод

     $("#rolesValues").change(function () {
               var id ='0001'                
               var name = 'admin'
               var listOfItems= [];
                //Populating listofItems with multiselect dropdown
                if ($('#ddlItemsList option:selected').length > 0) {
                    listOfItems = $.map($('#ddlItemsList option:selected'), function (item) {
                        return item.value;
                    });
                } 

            var data = { 
                    customerId: id,
                    Name: name,
                    listOfItems: listOfItems
                    }          


            $.ajax({
                    type: 'POST',
                    url: '/OrderAssignmentRuleSet/OrderAssignmentRuleSetEdit',
                    traditional : true,
                    data: data,
                    content: "application/json;",
                    dataType: "json",
                    success: function () {               
                    }
                });

Моя проблема - передать два strings (идентификатор и имя) и один array (listofItems в виде списка) в controller, текущий код ничего не возвращает.Пожалуйста, помогите, что не так с этим кодом?

Ответы [ 2 ]

3 голосов
/ 17 июня 2019

Вы пытаетесь отправить свои опубликованные данные в методе POST. Но вы пытаетесь собрать эти данные в параметрах запроса в методе действия.

Так что попробуйте создать класс вроде

public class Sample
{
    public string customerId { get; set; }
    public string Name { get; set; }
    public List<string> listOfItems { get; set; }
}

А затем измените свой метод действия, например

public ActionResult OrderAssignmentRuleSetEdit([FromBody] Sample sample)
{
    //Your stuff here
}
0 голосов
/ 17 июня 2019

вы можете решить вашу проблему следующим образом.

    myCustomFunction = function () {
    var model = {
        customerId: '',
        Name: '',
        listOfItems: ''

    };
    var url = '/OrderAssignmentRuleSet/OrderAssignmentRuleSetEdit';
    model.customerId = $("#customerId").val();// get customer id.
    model.Name = $("#Name").val();// get name;
    model.listOfItems = [];//get value of list;

        $.ajax({
            url: url,
            type: "Post",
            data: JSON.stringify(model),
            dataType: "json",
            contentType: "application/json"

        }).done(function (response) {
            console.log(response);

        }).fail(function (response) {
            console.log(response);

        });

    },

// На стороне сервера для получения данных создайте модель как требование на стороне клиента.

[HttpPost]

    public virtual JsonResult OrderAssignmentRuleSetEdit(MyCustomModel model)
    {
        try
        {
            ValidationViewModel msg = new ValidationViewModel();

            return Json(new { success = msg.Result, message = msg.Message }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            return Json(new { success = false, message = ex.Message }, JsonRequestBehavior.AllowGet);
        }

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