#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" })