2014-11-04 2 views
0

타사 파일 업 로더 (Backload)를 사용하여 이미지 업로드 & 업로드 된 이미지 이름을 가져 오는 JavaScript를 사용하고 있습니다. 해당 이미지 이름 목록을 MVC 모델에 바인딩하고 싶습니다. . 내 요구 사항은 폼을 제출할 때 숨겨진 입력을 동적으로 생성하는 것입니다. 알아, 나는 루프와 함께 순차 바인딩을 사용해야한다. 누구든지 올바른 구문을 사용하여이를 달성하는 방법을 알려줄 수 있습니까? 이 비슷한을해야이숨겨진 입력 필드를 추가하여 모델에 바인딩하십시오.

for (int i= 0; i< noOfImages; i++) 
{ 
    <input type="hidden" name="Model.Images[i].Name" value=file.name /> 
} 

(나는 이것을 위해 아약스 솔루션을 원하지 않는 점에 유의하시기 바랍니다 나에게 내 면도기보기에서 사용하는 코드를 보여주십시오 또는 다른 더 나은 솔루션이 있다면 알려 주시기 바랍니다).감사.

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 + '" /> 
} 

여기서 for 루프를 사용할 수 없습니다. 누구든지 Uploded 테이블의 모든 이미지 이름을 가져 오는 방법을 제안 할 수 있습니까?

답변

0

상단의 for 루프에서 올바르게했는데, 일단 JavaScript 부분에 도달하면 이름이 잘못되었습니다. 입력의 이름을 첫 번째 for 루프와 동일한 스타일로 유지하면 괜찮습니다. 즉 Images[N].Name입니다. N은 컬렉션의 항목 색인입니다.

+0

빠른 답장을 보내 주셔서 감사합니다. $ { 'ImageUplodedtable input [name = "ImageName"]') 각 (function) {for (var i = 0; i <1; i ++) { $ ('# AddItem' } 루프의 Increment 값 (i)이 올바르게 작동하지 않았습니다. ( user3627847

+0

'i'가 0으로 시작하고 조건에 1보다 작아야한다는 내용이 있기 때문에 알려주십시오. 그러므로 for 루프는 'i'가 1로 증가하고 더 이상 조건을 만족하지 않게됩니다. –

+0

죄송합니다, 지난 번 코멘트에서 명확하게 설명하지 않았습니다. 나는 수동으로 name = "Images [ 0] .Name을 입력 이름으로 사용 (for 루프 없음) ~ to 모델 바인딩 작동 여부를 확인하십시오. 그것은 잘 작동합니다. 그러나 FOR 루프를 사용할 때 작동하지 않습니다. 하나의 이미지 이름이 있다고 가정하고 for 루프가 한 번 실행되면 을 작성해야하지만 i 값은 그대로 유지됩니다 ... name = Images [i] .name. 그게 내 문제 야. (.each() for for loop를 사용해도 괜찮습니까?) – user3627847

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

    } 

} 
관련 문제