Как отправить сложный тип данных с помощью ajax в действие в контроллере в ASP.NET MVC

В моем проекте ASP.NET framework MVC я должен отправить ниже два данных (первые данные — это список строк, а вторые данные — это GUID) с помощью ajax для действия в контроллере:

0: "{Key:'052c5941-233a-4bd2-80e1-7cfffa34ca44',Value:'Salary1'}"
1: "{Key:'00000000-0000-0000-0000-000000000004',Value:'Salary2'}"
2: "{Key:'00000000-0000-0000-0000-000000000005',Value:'Salary3'}"
3: "{Key:'00000000-0000-0000-0000-000000000003',Value:'Salary4'}"
4: "{Key:'00000000-0000-0000-0000-000000000001',Value:'Salary5'}"
5: "{Key:'00000000-0000-0000-0000-000000000002',Value:'Salary6'}"

и

"6a580cf1-2f05-4621-8a67-8fe0bdd559c2"

Мои действия, как показано ниже

 public JsonResult DigestFile(List<string> value1, string pointId)
  {
   ....
  }

Как я могу это сделать? Любая помощь будет оценена!

если изменение API разрешено, я бы создал специальный класс, который будет инкапсулировать все необходимые свойства. класс с двумя свойствами: одно типа Dictionary<Guid, string> и другое типа Guid

Tomas Chabada 14.12.2020 08:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
372
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать HTTP-сообщение в качестве следующего кода для этого, вы просто создаете класс с ключом и значением и используете его в контроллере со строковой переменной в функции HTTP-сообщения.

Я не эксперт в C#, я перевел онлайн из своего кода VB, который хорошо работает.

В ваших представлениях (.cshtml):

<input id = "Button1" type = "button" value = "button" onclick = "SaveMe()" />
<script>
    function SaveMe() {
        var GUID = '6a580cf1-2f05-4621-8a67-8fe0bdd559c2';

        // Creat Object
        var lineItems = new Object();
        lineItems.Entrys = new Array();

        // Example Filling your object, but of course you can get data from another place ...
        lineItems.Entrys[0] = new Object({ Key: '052c5941-233a-4bd2-80e1-7cfffa34ca44', Value: 'Salary1' });
        lineItems.Entrys[1] = new Object({ Key: '00000000-0000-0000-0000-000000000004', Value: 'Salary2' });
        lineItems.Entrys[2] = new Object({ Key: '00000000-0000-0000-0000-000000000005', Value: 'Salary3' });


        $.ajax({
            type: "POST",
            url: "/Home/AjaxMethodDigestFile",
            data: JSON.stringify({ Entrys: lineItems.Entrys, GUID: GUID }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) { alert(response.message); },
            failure: function (response) { alert("failure"); },
            error: function (response) { alert("error"); }
        });
    }
</script>

В ваших моделях:

namespace MyModel1.ViewModel
{
    public class MyClass1
    {
        public string Key { get; set; }
        public string Value { get; set; }
    }
}

В ваших контроллерах:

[HttpPost]
public JsonResult  AjaxMethodDigestFile(ICollection<MyModel1.ViewModel.MyClass1> Entrys, string GUID)
{
    string message = "";
    int counter = 0;

    foreach (var entry in Entrys)
    {
        // How to use this data example
        string Key = entry.Key;
        string Value = entry.Value;
        counter += 1;
        message += Value + ": " + Key + Constants.vbCrLf;
    }

    // The following lines are not necessary, it's just an example code to know what happen and return it to client side ...
    if (counter > 0)
        message = counter.ToString() + " Entrys received" + Constants.vbCrLf + message;
    else
        message = "no entrys";


    var response = new { counter, message };
    
    return Json(response);
}

Спасибо, это было здорово, и вы помогли мне решить мою проблему. Но я внес некоторые изменения в действие, я имею в виду, что ввод «Записей» был списком нулей, и я не знаю, и я не использовал модель «MyClass1», а ввод моего действия выглядит следующим образом: public ActionResult DigestFile ( List<string> Сопоставления, строка pointId){...}

Mostafa 17.12.2020 12:00

Другие вопросы по теме