每页多个Telerik MVC上传控件?

dea*_*_au 2 file-upload telerik-mvc razor asp.net-mvc-3

我正在使用Telerik Extensions for ASP.NET MVC 3,我遇到了上传控件的问题.我想在同一页面上有多个上传控件(例如,我要求提供图像和声音文件).问题是,只有第一个上传控件有效.页面上的任何其他人都可以正常渲染,点击它们仍会显示文件选择对话框,但除第一个之外没有其他任何实际响应.

Telerik似乎没有在控制台或任何事情中报告任何错误,它只是根本不起作用.是否有一些特定的东西我必须要在一个页面上允许多个上传控件?

为了演示,这是破坏的代码不起作用:

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemImageOnSuccess")
        .OnError("ItemImageOnError")
    )
)

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemSoundOnSuccess")
        .OnError("ItemSoundOnError")
    )
)
Run Code Online (Sandbox Code Playgroud)

第二个上载字段正确呈现,但不起作用.

dea*_*_au 6

对于遇到类似问题的其他人,我设法自己解决了.
我的问题是我在页面上的所有上传控件都有相同的名称,这反过来给了他们相同的ID,所以Telerik的所有javascript只能在第一个上传控件上运行.修复很明显:更改名称.

但是,这引入了一个新问题,因为我使用的所有上传控件都指向相同的函数,并且在更改控件的名称时,参数不再正确映射,我只是得到一个空文件列表.要解决问题,我需要在.Save()函数中添加一个额外的参数来告诉它字段名称.

以下是我的代码的修复:

@(Html.Telerik().Upload()
    .Name("ImageUpload")
    .Async(async => async.Save("Save", "Resource", "attachments").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemImageOnSuccess")
        .OnError("ItemImageOnError")
    )
)

@(Html.Telerik().Upload()
    .Name("SoundUpload")
    .Async(async => async.Save("Save", "Resource", "attachments").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemSoundOnSuccess")
        .OnError("ItemSoundOnError")
    )
)
Run Code Online (Sandbox Code Playgroud)