我正在使用第三方文件上传器(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; }
}
当我单击#ItemCreate表单的提交按钮时,我使用以下JavaScript代码来获取上传文件名的值并创建隐藏输入。
$('#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表中的所有图像名称?
答案 0 :(得分:0)
你已经在你的for循环中完成了它,但是一旦你进入JavaScript部分,你就会搞砸名字。保持输入的名称与第一个for循环的样式相同,你可以没事,即Images[N].Name
其中N
是集合中项目的索引。
答案 1 :(得分:0)
我最终决定使用此功能来创建隐藏文件。我希望这可能有助于像我这样的新手。
function CretaeHiddenFields(){
var uploadedImages = $('#ImageUplodedtable input[name="ImageName"]') ;
var divArea = $(#CreateInputDiv);
for (var i = 0; i < uploadedImages .length; i++) {
var imageName = document.createElement("input");
imageName.type = "hidden";
imageName.name = "Images[" + i + "].Name";
imageName.value = uploadedImage[i].value; // value of #ImageUplodedtable ImageNameinputs
formCreteItm.append(imageName);
}
}