C# MVC Web 应用程序
我有一个按钮,可以将输入字段动态添加到表单上的网页。我特别为动态添加的元素提供了一个 id 和名称以符合我的模型,以便它们作为类似项目的集合传回,以匹配我模型中的“艺术家”集合属性。
所以输入元素名称和ID例如
Artists[0].artist
Artists[1].artist
Artists[2].artist
在我的模型中,我有:
public Collection<Artist> Artists { get; set; }
public class Artist
{
public string artist { get; set; }
}
这是我添加删除元素的脚本:
var artists = new Array();
var AddArtist = function (e) {
artistname = $("#artistinput").val();
artists.push($("#artistinput").val());
var addDiv, artistVal;
addDiv = $("#artist");
artistVal = $("#artistinput").val();
var input_append = $('<div />'),
label = $('<input />', {
style: 'background-color:#e0ffff',
Value: artistVal,
id: 'artists[' + (artists.length - 1) + '].artist',
name: 'artists[' + (artists.length - 1) + '].artist',
readonly: true
}),
image = $('<img />', {
id: 'removeartist',
src: '/Content/bootstrap/img/cross-button.png',
on: {
click: function () {
input_append.remove();
artists.splice(artists.length - 1, 1);
var test = (artists.length - 1);
alert(test);
}
}
}
);
addDiv.append(input_append.append(label, image));
};
我可以在实际页面上添加/删除元素。问题是,如果我从中间或开头删除一个元素,名称 id 的序列就会被破坏,并且当集合被传递回我的模型时,Artists 集合现在是空的。
所以而不是
Artists[0].artist
Artists[1].artist
Artists[2].artist
这可能会被传回:
Artists[0].artist
Artists[2].artist
这不再是一个基于视图如何映射到模型的集合。
删除项目后,我需要按有序顺序重命名所有名称/ID。
这个问题最简单的解决方案是什么。
这样就可以传回去
Artists[0].artist
Artists[1].artist