Javascript 附加隐藏的输入字段并将其绑定到模型

Javascript 附加隐藏的输入字段并将其绑定到模型,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我正在使用第三方文件上传器(Backload)上传图像和JavaScript以获取上传的图像名称。我想将图像名称列表绑定到我的MVC模型中。我的要求是在提交表单时动态创建隐藏的输入。我知道,我必须使用循环的顺序绑定。谁能帮助我如何使用正确的语法来实现这一点。 应该是类似的 for(int i=0;i

我正在使用第三方文件上传器(Backload)上传图像和JavaScript以获取上传的图像名称。我想将图像名称列表绑定到我的MVC模型中。我的要求是在提交表单时动态创建隐藏的输入。我知道,我必须使用循环的顺序绑定。谁能帮助我如何使用正确的语法来实现这一点。 应该是类似的

for(int i=0;i
(请注意,我不需要Ajax解决方案,请向我展示在Razor视图中使用的代码,或者如果有其他更好的解决方案,请告诉我)。谢谢

公共类ItemModel
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection映像{get;set;}
}
公共类图像模型
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共虚拟项模型项{get;set;}
}
当我单击#ItemCreate form的submit按钮时,我使用以下JavaScript代码获取上传文件名的值并创建隐藏输入

$('#ImageUplodedtable input[name="ImageName"]').each(function () {
    $('#ItemCreateForm').append('<input  name="ImageName" value="' + this.value + '"/>');
$('#ImageUplodedtable输入[name=“ImageName”]')。每个(函数(){
$('#ItemCreateForm')。追加('');
我在我的问题中添加了以下部分。我错过了单引号和两个加号['+I+'],现在它运行良好

  $('#ImageUplodedtable input[name="ImageName"]').each(function () {
    for (int i= 0; i< noOfImages; i++)
{
    <input type="hidden" name="Images[+'i'+].Name"  value="' + this.value + '" />
}
$('#ImageUplodedtable输入[name=“ImageName”]')。每个(函数(){
for(int i=0;i

我不能在这里使用带有for循环的.each()。有人能建议一种方法来获取上传表中的所有图像名称吗?

您在顶部的for循环中做得很好,但是一旦进入JavaScript部分,名称就错了。请将输入的名称保持在与第一个for循环相同的样式,这样您就不会有问题,即
图像[N].Name
其中
N
是集合中项目的索引。

我最终决定使用此功能创建隐藏文件。我希望这可能对像我这样的新手有帮助

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);

    }

}
函数cretaehidenfields(){
var uploadedImages=$('#ImageUplodedtable输入[name=“ImageName”]”);
var divArea=$(#CreateInputDiv);
对于(var i=0;i
非常感谢您的快速回复。$('#ImageUplodedtable input[name=“ImageName”]')。每个(函数(){for(var i=0;i<1;i++){$('#AddItem')。append('')}我尝试了这个方法,但循环的增量(i)工作不正常。(因为
i
从0开始,并且您的条件声明它必须小于1。因此,for循环运行一次,其中
i
然后递增为1,不再满足条件。很抱歉,我在上一条评论中没有清楚地解释我的问题。我手动将name=“Images[0]。name作为输入的名称(不带for循环)检查模型绑定是否工作。它工作正常。但当我使用for循环时,它不工作。假设我有一个映像名称,并且for循环运行一次时,它应该创建,但I值保持为I…name=Images[I].name。这是我的问题。(可以使用for循环的.each()吗?)非常抱歉,这是我的错误。语法错误。name=“Images['+i+']
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);

    }

}