如何在Kendo网格中显示外键列的验证消息?

我有一个使用mvc和批处理编辑的剑道网格。一切工作正常,除了当我的控制器为网格中的外键列返回错误时,直到用户单击网格单元格,网格才会显示验证消息。一旦他们单击网格单元格,就会显示验证消息。

p.s。永远不会调用grid onerror方法。

这是我的网格:

@(Html.Kendo().Grid<eclERC.ViewModels.PaymentDetailTerm>(Model.PaymentDetailTerms)
  .Name("TermGrid")
  .DataSource(ds => ds
  .Ajax()
  .ServerOperation(false)
  .Model(m =>
  {
    m.Field(d => d.TermTypeTitle).Editable(false);
    m.Field(d => d.PayeePartyName).Editable(false);
    m.Field(d => d.FrequencyDescription).Editable(false);
    m.Field(d => d.PayoffBalance).Editable(false);
    m.Field(d => d.PeriodicAmount).Editable(false);
    m.Field(d => d.OriginalUnpaidBalance).Editable(false);
    m.Field(d => d.ClerkFeeflag).Editable(false);
    m.Field(d => d.Disbursed).Editable(true);
    m.Field(d => d.Holdflag).Editable(true);
    m.Field(d => d.HoldReasonId).Editable(true);
    m.Field(d => d.HoldReason);
  })
  .Events(events => events.Error("onGridError"))
  )
  .Columns(columns =>
  {
    columns.Bound(e => e.TermTypeTitle).Width(110).Title("Term Type");
    columns.Bound(e => e.PayeePartyName).Width(110).Title("Payee");
    columns.Bound(e => e.FrequencyDescription).Width(110);
    columns.Bound(e => e.PayoffBalance).Width(110);
    columns.Bound(e => e.PeriodicAmount).Width(110);
    columns.Bound(e => e.OriginalUnpaidBalance).Width(100);
    columns.Bound(e => e.ClerkFeeflag).Width(100);

    columns.Bound(e => e.Disbursed).Width(100).HtmlAttributes(new { @class = "inputField" });
    columns.Bound(e => e.Holdflag).Width(100).HtmlAttributes(new { @class = "inputField" });
    columns.ForeignKey(p => p.HoldReason,(System.Collections.IEnumerable)ViewData["HoldReasonId"],"Value","Text")
      .EditorViewData(new { HoldReasonId = (System.Collections.IEnumerable)ViewData["HoldReasonId"] })
      .EditorTemplateName("HoldReasonEditor").ClientTemplate("#=HoldReason.Value > 0 ? HoldReason.Text : '' #")
      .Title("Hold Reason")
      .Width(110).HtmlAttributes(new { @class = "inputField" });
  })
  .Sortable()
  .Editable(editable => editable.Mode(GridEditMode.InCell))
  .Events(x => { x.Save("function(e){onGridSave(e)}"); x.CellClose("function(e){onCellClose(e)}"); x.databound("function(e){ondatabound(e)}"); })
  .Scrollable()
  .HtmlAttributes(new { style = "height:350px" }))

这是在表单提交上调用的控制器方法,它添加了模型错误:

 [Authorize(Policy = "PaymentCreate")]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IactionResult> CaseCreate(PaymentCaseCreate paymentCaseCreate,string paymentTendersList,string detailsList)
    {
      CustomLogger.WriteMessage((int)LoggingLevel.Debug,"Payment Controller CaseCreate entered.",_user.SiteId,_user.SecUserId,"PaymentController",string.Empty);
      ViewData["CountyName"] = (_redisDb.StringGet("eclERC" + _user.SecUserId)).ToString();

      var details = JsonConvert.DeserializeObject<IEnumerable<PaymentDetailTerm>>(detailsList);
      var tenderDetails = JsonConvert.DeserializeObject<IEnumerable<PaymentTender>>(paymentTendersList);

      foreach (PaymentDetailTerm detail in details)
      {
        if (detail.HoldReasonId.IsnullOrZero() && detail.Holdflag)
        {
          ModelState.AddmodelError("HoldReason","Hold Reason required when Hold is set.");
        }
        if (!detail.HoldReasonId.IsnullOrZero() && !detail.Holdflag)
        {
          ModelState.AddmodelError("Holdflag","Hold must be set when Hold Reason supplied.");
        }
      }


      if (ModelState.IsValid)
      {
``` {code left out for brevity} ```
      }
      else
      {
        var errors = ModelState.Keys.Where(k => ModelState[k].Errors.Count > 0).Select(k => new { propertyName = k,errorMessage = ModelState[k].Errors[0].ErrorMessage });
      }
      return View(paymentCaseCreate);
    }
xy252510631 回答:如何在Kendo网格中显示外键列的验证消息?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3135576.html

大家都在问