2013-06-26 2 views
0

У меня есть следующие фрагменты кода в моем MVC 3 приложении:HttpFilePostedBase параметр является нулевым

Вид:

@(Html.Telerik().Upload() 
     .Name("insertAttachement") 
     .Multiple(false) 
     .Async(async => async.Save("InsertUpload", "DocumentMaquette")) 
     .Localizable("fr-CH") 
         .ClientEvents(events => events 
           .OnLoad("handleUploadControlLoad") 
           .OnUpload("handleInsertUpload") 
          ) 
     ) 

контроллера метод:

public void InsertUpload(HttpPostedFileBase attachement) 
    { 
     DocumentMaquetteModel model = new DocumentMaquetteModel(); 
     model.fileName_DMQ = attachement.FileName;    
    } 

JS обработчиках событий Файла:

function handleInsertUpload(e) { 
    console.log(e.files); 
} 


function handleUploadControlLoad() { 
    // handle buttons 
    $(this).parent().find('.t-button.t-grid-insert, .t-button.t-grid-cancel').remove(); 

    // schedule grid refresh on window close 
    $(this).closest('.t-window').on('close', refreshGrid); 
} 
function refreshGrid() { 
    $('.t-grid').data('tGrid').ajaxRequest(); 
} 

Th е выход в консоли:

[Object] 
0: Object 
extension: ".odt" 
name: "ListeDeParticipantsParSP.odt" 
rawFile: File 
size: 761691 
__proto__: Object 
length: 1 
__proto__: Array[0] 

Но в методе контроллера я получаю исключение NullReferenceException, когда я пытаюсь получить имя файла из вложения, так как параметр является недействительным.

Любая информация об этом более чем приветствуется.

Спасибо, Silviu

+0

Я бы обернул логику загрузки файлов в блок catch try, поймал исключения и обработал его соответствующим образом. Могли бы сэкономить вам немного позже. – mezmi

ответ

1

Ну, секунды после размещения вопрос, и ответ пришел. Кажется, что элемент управления Telerik использует имя, присвоенное Upload для отправки параметра файла методу. Итак, метод, используемый в Save, всегда должен иметь параметр HttpPostedFileBase, названный точно как элемент управления. В этом случае метод должен принимать параметр с именем insertAttachement. Иди цифра!

Спасибо за ваше время.

+0

Спасибо, это мне очень помогает – MayogaX