我正在使用Telerik MVC网格让用户管理系统中的报告。 我构建了一个EditorTemplate,里面有一些字段,还有一个来自Telerik的上传器。
我想将ReportId传递给上传器方法,以便它知道文件所属的报告记录。
@model MyMvcApp.Models.ReportModel
@Html.DisplayFor(t => t.ReportID)
@Html.HiddenFor(t=> t.ReportID)
@(Html.Telerik().Upload()
.Name("attachments")
.Multiple(false)
.Async(async => async.Save("Save", "Report",
new { Id = Model.ReportID })
.AutoUpload(true)
))
但是,Model.RaportId
会返回一个空的GUID。
此外,@Html.DisplayFor(t => t.ReportID)
无效。
但是当我检查页面时@Html.HiddenFor(t=> t.ReportID)
工作得很好。
我知道Telerik在创建编辑器模板时正在构建虚拟模型。但是可以做些什么呢?
总而言之,我现在已经改为使用单独的视图进行创建/更新,但我想将其构建到网格中。经验会更好。
答案 0 :(得分:0)
我认为您可能需要利用OnUpload
method from Telerik MVC's Client API。
此方法允许您在发送上载请求之前访问数据。因此,您可以调试上传数据,如果不正确,则可以对其进行操作(例如,添加正确的ReportID参数)。
答案 1 :(得分:0)
我有同样的问题并开始搜索。根据telerik,Display templates are not supported in ajax edit mode。我认为这很有意义,因为编辑模式几乎瞬间弹出。您需要使用网格的OnEdit事件。
我现在正在使用禁用的文本框,如下所示。
@Html.TextBoxFor(model => model.ReportId, new { disabled = "disabled" })