HttpFilePostedBase参数为null

时间:2013-06-26 14:31:34

标签: asp.net-mvc-3 telerik-mvc httppostedfilebase

我在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异常,因为参数为null。

有关这方面的任何信息都是受欢迎的。

谢谢,Silviu

1 个答案:

答案 0 :(得分:1)

好吧,在发布问题后几秒钟,答案来了。似乎Telerik控件使用为Upload提供的名称将file参数发送到方法。因此, Save上使用的方法应始终将HttpPostedFileBase参数命名为控件。在这种情况下,该方法应该采用名为insertAttachement的参数。去图!

感谢您的时间。