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

Посмотреть:

@(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();
}

Вывод в консоли:

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

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

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

Спасибо, Сильвиу

0
Silviu Preda 26 Июн 2013 в 18:31
Я бы заключил логику загрузки файлов в блок try catch, перехватил исключения и обработал их соответствующим образом. Позже может спасти вас от некоторых проблем.
 – 
matt.
26 Июн 2013 в 18:40

1 ответ

Лучший ответ

Что ж, секунды после публикации вопроса и пришел ответ. Похоже, что элемент управления Telerik использует имя, данное объекту загрузки, для отправки параметра файла методу. Итак, метод, используемый при сохранении, всегда должен иметь параметр HttpPostedFileBase, названный точно так же, как элемент управления . В этом случае метод должен принимать параметр с именем insertAttachement. Иди разберись!

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

1
Silviu Preda 26 Июн 2013 в 18:33
Спасибо, это мне очень помогло
 – 
MayogaX
27 Июл 2016 в 21:32