Telerik MVC EditorTemplate Model is empty
本文关键字:is empty Model EditorTemplate MVC Telerik | 更新日期: 2023-09-27 18:12:44
我使用Telerik MVC网格让用户管理系统中的报表。我构建了一个EditorTemplate,其中包含一些字段和一个来自Telerik的上传器。
我想把ReportId传递给uploader方法,这样它就知道文件属于哪个报告记录。
@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在创建编辑器模板时正在构建一个虚拟模型。但我们能做些什么呢?
- 使用javascript填充ViewBag变量并在保存方法中使用?
- 用不同的方式调用模型?
总而言之,我现在已经改为使用单独的视图来创建/更新,但我想将其构建到网格中。体验会更好。
我认为您可能需要利用来自Telerik MVC的客户端API的OnUpload
方法。
此方法允许您在发送上传请求之前访问数据。所以,你有一个地方调试上传数据,如果它是不正确的,那么你可以操纵它(例如添加正确的ReportID参数)。
我有同样的问题,并开始搜索。根据telerik的说法,ajax编辑模式不支持Display模板。我认为这是有道理的,因为编辑模式几乎是瞬间弹出的。你需要使用网格的OnEdit事件。
我现在使用一个禁用的文本框,如下所示。
@Html.TextBoxFor(model => model.ReportId, new { disabled = "disabled" })