Сетка MVC пользовательского интерфейса Kendo с окном Kendo — ошибка 500

#asp.net-mvc #kendo-ui #kendo-grid #kendo-asp.net-mvc #kendo-window

#asp.net-mvc #kendo-ui #kendo-grid #kendo-asp.net-mvc #kendo-window

Вопрос:

Итак, я уже некоторое время бьюсь головой об эту проблему, поэтому сначала позвольте мне объяснить, что мне нужно сделать, а затем я перейду к тому, где я нахожусь.

Это asp.net приложение mvc. Часть моего приложения, с которой я борюсь, должна это сделать:

  1. Отображение основной сетки, которая использует всплывающие окна для добавления и редактирования
  2. Отображение кнопок добавления и редактирования
  3. Отобразите столбец гиперссылки, который должен открыть всплывающее окно с сеткой
  4. Отобразить пользовательскую командную кнопку, которая должна открыть всплывающее окно с сеткой

1 и 2 работают так, как ожидалось.

В настоящее время я пытаюсь создать окно Kendo со вторичными сетками в # 3 и # 4, загрузив частичное представление, а затем вызвав обновление действия контроллера для этого окна Kendo. Я могу правильно сохранить данные из этих окон, но сетка не заполняется данными из действия контроллера (хотя я могу отладить, что код возвращает данные в действии), и я получаю ошибку 500 в консоли браузера.

Основная сетка:

 @(Html.Kendo().Grid<PAUL.Models.Response.DetailsViewModel>()
  .Name("PaymentGrid")
  .Columns(columns =>
  {
      columns.Bound(c => c.PMT_DTL_SK).Width(110);
      columns.Bound(c => c.CommentsField).Title("Comments").ClientTemplate("<a onclick="showDetails('#=PMT_DTL_SK#')" style='cursor:auto'>#=CommentsField#</a>").Width(110);
      columns.Command(command => command.Edit().Text("Lookup")).Width(100);
      columns.Command(command => command.Custom("Ignore").Click("ignoreRecord")).Width(180);
  })
  .ToolBar(toolbar =>
  {
      toolbar.Excel();
      toolbar.Create();
  })
  .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("_EditPayment"))
  .Pageable()
  .Events(events =>
  {
      events.Save("onSave");
      events.Edit("HideGridFields");
      events.DataBound("onDataBound");
  })
  .DataSource(dataSource => dataSource
      .Ajax()
      .Model(model => model.Id(p => p.PMT_DTL_SK))
      .PageSize(300)
      .Create(create => create.Action("Payment_Create", "Landing"))
      .Update(update => update.Action("Payment_Update", "Landing", @Model))
      .Read(read => read.Action("Payments_Read", "Landing", @Model))
      .Events(events => events.Sync("sync_handler"))
  ))
  

Скрипт и код окна Kendo для гиперссылки комментариев:

 @(Html.Kendo().Window().Name("Comments")
.Title("Letter Date/Comments")
.Visible(false)
.LoadContentFrom("Comments", "Landing")
.Modal(true)
.Draggable(true)
.Width(450))

<script type="text/javascript">
function showDetails(paymentDetailSK) {
    var wnd = $("#Comments").data("kendoWindow");
    wnd.refresh({
        url: "/Landing/GetComments",
        data: { paymentDetailSK: paymentDetailSK }
    });
    wnd.center().open();
}</script>
  

LandingContoller — действие getComments

     public ActionResult GetComments([DataSourceRequest]DataSourceRequest request, Decimal? paymentDetailSK)
    {
        var comments = new PAULDataRepository().Comments_Read(paymentDetailSK).ToList();

        return Json(comments.ToDataSourceResult(request));
    }
  

Сетка в частичном представлении _Comments:

     <div class="row">
    @(Html.Kendo().Grid<PAUL.Entities.PaymentDetailAttachment>()
    .Name("commentsGrid")
    .Columns(columns =>
    {
        columns.Bound(c => c.CommentText).Title("Comments");
        columns.Bound(c => c.CreatedByUser).Title("Created By");
        columns.Bound(c => c.CreatedDateTime).Title("Creation Time").Format("{0:MM/dd/yyyy HH:mm tt}");
    })
    .HtmlAttributes(new { style = "height: 250px;" })
    .Scrollable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("GetComments", "Landing"))
        .PageSize(20)
    )
    )
</div>
  

Я попытался установить тип данных для wnd.refresh в json, а также попытался изменить действия и т. Д., Чтобы принудительно получить или опубликовать, Но безуспешно.

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

1. Какой целевой URL-адрес ошибки 500 в консоли вашего браузера?

2. Это ошибка консоли: h t t p://localhost:3763/Landing/GetComments ? paymentDetailSK=304303amp;_=1476798775055 Не удалось загрузить ресурс: сервер ответил со статусом 500 (внутренняя ошибка сервера)

Ответ №1:

Оказывается, я вызывал метод data при выполнении обновления вместо действия action, которое возвращает частичное представление.