Telerik MVC EditorTemplate模型为空

时间:2011-10-30 23:48:00

标签: c# asp.net-mvc telerik

我正在使用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在创建编辑器模板时正在构建虚拟模型。但是可以做些什么呢?

  • 使用javascript填充ViewBag变量并在save方法中使用它?
  • 以不同的方式调用模型?

总而言之,我现在已经改为使用单独的视图进行创建/更新,但我想将其构建到网格中。经验会更好。

2 个答案:

答案 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" })