2014-11-04 40 views
0

我喜歡第三方文件上傳(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表中的所有圖像名稱?

回答

0

你已經在頂部的for循環中做了正確的操作,但是一旦你到達JavaScript部分,就會讓名稱變得糟糕。保持輸入的名稱與第一個for循環的樣式相同,並且您會沒事的,即Images[N].Name其中N是集合中項目的索引。

+0

非常感謝您的快速回復。 (var i = 0; i <1; i ++){('#AddItem')。append(){('#ImageInputName [ ''); } 我試過這個,但是對於循環的遞增值(i)無法正常工作。 name =「Images [0] .Name />沒有for循環,你可以讓我知道爲什麼遞增值在這裏不起作用 – user3627847 2014-11-04 16:49:56

+0

因爲'i'開始爲0,並且你的條件必須小於1 。因此,for循環運行一次,其中'i'然後增加到1並且不再滿足條件 – 2014-11-04 16:53:04

+0

對不起,我沒有在我最後的評論中清楚地解釋我的問題 我手動給name =「Images [ 0] .Name作爲輸入的名稱(無for循環)檢查模型綁定是否正常工作。它工作正常。 但是,當我使用FOR循環它不工作。假設我有一個圖像名稱,並且當for循環運行一次時,它應該創建,但是我的值仍然是i ... name = Images [i] .name。這是我的問題。 (可以使用.each()for循環嗎?) – user3627847 2014-11-04 17:18:01

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

    } 

} 
相關問題