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 EditorTemplate Model is empty

我认为您可能需要利用来自Telerik MVC的客户端API的OnUpload方法。

此方法允许您在发送上传请求之前访问数据。所以,你有一个地方调试上传数据,如果它是不正确的,那么你可以操纵它(例如添加正确的ReportID参数)。

我有同样的问题,并开始搜索。根据telerik的说法,ajax编辑模式不支持Display模板。我认为这是有道理的,因为编辑模式几乎是瞬间弹出的。你需要使用网格的OnEdit事件。

我现在使用一个禁用的文本框,如下所示。

 @Html.TextBoxFor(model => model.ReportId, new { disabled = "disabled" })