В моем проекте 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)
{
....
}
Как я могу это сделать? Любая помощь будет оценена!
Вы можете использовать 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){...}
если изменение API разрешено, я бы создал специальный класс, который будет инкапсулировать все необходимые свойства. класс с двумя свойствами: одно типа Dictionary<Guid, string> и другое типа Guid