0

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

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

谢谢,西尔维

4

1 回答 1

1

好吧,在发布问题几秒钟后,答案就来了。Telerik 控件似乎使用为 Upload 指定的名称将文件参数发送到该方法。因此,在 Save 上使用的方法应该始终将 HttpPostedFileBase 参数命名为与 control 完全相同。在这种情况下,该方法应采用名为 insertAttachement 的参数。去搞清楚!

谢谢你的时间。

于 2013-06-26T14:33:58.567 回答