В моем приложении 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, когда пытаюсь получить имя файла из вложения, поскольку параметр равен нулю.
Любая информация по этому поводу более чем приветствуется.
Спасибо, Сильвиу
1 ответ
Что ж, секунды после публикации вопроса и пришел ответ. Похоже, что элемент управления Telerik использует имя, данное объекту загрузки, для отправки параметра файла методу. Итак, метод, используемый при сохранении, всегда должен иметь параметр HttpPostedFileBase, названный точно так же, как элемент управления . В этом случае метод должен принимать параметр с именем insertAttachement. Иди разберись!
Спасибо за ваше время.
Похожие вопросы
Новые вопросы
asp.net-mvc-3
ASP.NET MVC 3 является третьей основной версией расширения Model-View-Controller для разработки веб-приложений в среде .NET.