Нет, это не так.В определенной вами модели вы создали два разных массива: первое свойство Field
представляет собой массив строк, а второе свойство Check
- массив значений bools.размещение []
после типа указывает на массив.
Если у вас есть неизвестное число того, что я назову «мини-формами», и количество их определяется пользователем через пользовательский интерфейс, то вам нужно создать модель представления для представления этой мини-формы, имодель представления контейнера для размещения его и любые другие свойства, которые понадобятся вашему представлению.
Например:
public class MiniFormViewModel
{
public string MyInput { get; set; }
public bool MyCheck { get; set; }
}
затем в вашей модели представления контейнера:
public class ContainerViewModel
{
public IEnumerable<MiniFormViewModel> MiniForms { get; set; }
//Any other properties you need on the view that will occur a single time
}
Теперь в JS вам нужно добавить некоторые манипуляции, чтобы сделать это:
function getViewModel() {
//You'll have to decide how you want to get the values of the mini form's fields. Perhaps you might even have a function to supply these values. Up to you.
return {
MiniForms: [{
MyInput: '', //value from the first "mini form' string field
Mycheck: false //value from the first "mini-form" bool field
},
{
MyInput: '', //value from the second"mini form' string field
Mycheck: false //value from the second"mini-form" bool field
}
]
}
}
Затем вам нужно будет отправить это обратно на сервер.Я продемонстрирую, как это сделать, с помощью встроенной функции JS Fetch:
fetch(yourUrlForTheControllerAction,
{
method: 'post',
body: JSON.stringify(getViewModel()),
headers: {
'content-type': 'application/json; charset=UTF-8'
}
})
А затем, чёрт возьми, вам пора идти.Я исключил часть динамического добавления полей мини-формы, потому что, похоже, у вас уже есть решение для этого.