ul
и li
не являются отправляемыми элементами формы. Вы можете попробовать следующее.
Я не уверен, как выглядит ваша модель представления, но она выглядит как список строковых значений? Итак, в вашей модели будет выглядеть так:
public class YourViewModel
{
public List<string> Items { get; set; }
}
На ваш взгляд, попробуйте следующее:
<ul id="myUL">
<li>item1</li>
<li>item2</li>
/*...*/
<li>itemN</li>
</ul>
function addHidden(theLi, key, value) {
// Create a hidden input element, and append it to the li:
var input = document.createElement('input');
input.type = 'hidden';
input.name = key;'name-as-seen-at-the-server';
input.value = value;
theLi.appendChild(input);
}
function newElement() {
var li = document.createElement("li");
var inputValue = document.getElementById("myInput").value;
var t = document.createTextNode(inputValue);
li.appendChild(t);
addHidden(li, 'your-model-propertyName' + li-Count+1, inputValue );
document.getElementById("myUL").appendChild(li);
}
Когда вы отправляете сообщения, эти элементы должны оставаться в списке.
[HttpPost]
[AllowAnonymous]
//[ValidateAntiForgeryToken]
public async Task<IActionResult> NewShoppingList(List<string> list)
{
// I don't know how to accept that list
}
Если вам не нравится добавлять скрытое поле для каждого li, вы можете получить все элементы li и отправить их с помощью Ajax.
как это:
function sendData() {
var items = [];
$("#myUL li").map(function () {
items.push(this.innerText);
});
$.ajax({
type: "POST",
data: {
list: items
},
url: "/Home/NewShoppingList",
success: function (res) {
}
}
Надеюсь, это поможет.