我喜欢第三方文件上传(Backload)上传图像& JavaScript获取上传的图像名称。我想将图像名称列表绑定到我的MVC模型中。我的要求是在提交表单时动态地创建隐藏的输入。我知道,我必须在循环中使用顺序绑定。任何人都可以帮助我如何使用正确的语法来实现这一点。 它应该是类似的东西这个添加隐藏的输入字段并将它们绑定到模型
for (int i= 0; i< noOfImages; i++)
{
<input type="hidden" name="Model.Images[i].Name" value=file.name />
}
(请注意,我不希望Ajax解决方案,这和请告诉我的代码我Razor视图使用或者是否有其他更好的解决方案,请让我知道)。谢谢。
public class ItemModel
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<ImageModel> Images { get; set; }
}
public class ImageModel
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ItemModel Items { get; set; }
}
我用下面的JavaScript代码来获得上传的文件名的值,当我点击提交#ItemCreate形式的按钮来创建隐藏的输入。
$('#ImageUplodedtable input[name="ImageName"]').each(function() {
$('#ItemCreateForm').append('<input name="ImageName" value="' + this.value + '"/>');
我将下面的部分添加到我的问题中。我错过了单引号和两个加号['+ i +'],现在它工作正常。
$('#ImageUplodedtable input[name="ImageName"]').each(function() {
for (int i= 0; i< noOfImages; i++)
{
<input type="hidden" name="Images[+'i'+].Name" value="' + this.value + '" />
}
我不能在这里使用.each()for循环。任何人都可以提供一种方法来获取Uploded表中的所有图像名称?
非常感谢您的快速回复。 (var i = 0; i <1; i ++){('#AddItem')。append(){('#ImageInputName [ ''); } 我试过这个,但是对于循环的递增值(i)无法正常工作。 name =“Images [0] .Name />没有for循环,你可以让我知道为什么递增值在这里不起作用 – user3627847 2014-11-04 16:49:56
因为'i'开始为0,并且你的条件必须小于1 。因此,for循环运行一次,其中'i'然后增加到1并且不再满足条件 – 2014-11-04 16:53:04
对不起,我没有在我最后的评论中清楚地解释我的问题 我手动给name =“Images [ 0] .Name作为输入的名称(无for循环)检查模型绑定是否正常工作。它工作正常。 但是,当我使用FOR循环它不工作。假设我有一个图像名称,并且当for循环运行一次时,它应该创建,但是我的值仍然是i ... name = Images [i] .name。这是我的问题。 (可以使用.each()for循环吗?) – user3627847 2014-11-04 17:18:01