Модель Telerik MVC EditorTemplate пуста

#c# #asp.net-mvc #telerik

#c# #asp.net-mvc #telerik

Вопрос:

Я использую сетку 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 и использования ее в методе сохранения?
  • Вызовите модель по-другому?

В целом, теперь я перешел на использование отдельных представлений для создания / обновления, но я бы хотел встроить это в сетку. Опыт был бы лучше.

Комментарии:

1. Есть ли какие-либо примечания к данным в вашем поле ReportId, подобные этому? [HiddenInput(displayValue = false)]

2. Нет. Проблема должна быть где-то в другом месте.

Ответ №1:

Я думаю, вам может понадобиться использовать OnUpload метод из клиентского API Telerik MVC.

Этот метод предоставляет вам доступ к данным до отправки запроса на загрузку. Итак, у вас есть место для отладки загружаемых данных, и если они неверны, вы можете манипулировать ими (например, добавить правильный параметр ReportId).

Ответ №2:

У меня была такая же проблема, и я начал поиск. Согласно telerik, шаблоны отображения не поддерживаются в режиме редактирования ajax . Я думаю, это имеет смысл, поскольку режим редактирования появляется почти мгновенно. Вам нужно будет использовать событие onEdit сетки.

На данный момент я использую отключенное текстовое поле, как показано ниже.

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