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

时间:2014-11-04 13:40:20

标签: javascript jquery asp.net-mvc razor

我正在使用第三方文件上传器(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表中的所有图像名称?

2 个答案:

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

    }

}