Syncfusion Asp. Net Datagrid: как вернуть ошибку из класса CRUD - PullRequest
0 голосов
/ 10 января 2020

У меня есть таблица Syncfusion Asp. net, выполняющая операции CRUD.

public ActionResult Insert(CRUDModel<Source> newItem)
{
    using (var context = new ImageStormEntities())
    {
        context.Sources.Add(newItem.Value);
        context.SaveChanges();
    }

    return Json(newItem.Value);
}

cs html:

@Html.EJS().Grid("DataGrid").DataSource(ds => ds.Json(ViewBag.datasource).UpdateUrl("/Management/Update").InsertUrl("/Management/Insert").RemoveUrl("/Management/Remove").Adaptor("RemoteSaveAdaptor")).Columns(col =>
{

    col.Field("id").IsPrimaryKey(true).Visible(false).Add();
    col.Field("ResourceGroup").HeaderText("Source VM Resource Group").Add();
    col.Field("VMName").HeaderText("Source VM Name").Add();
    col.Field("imageVersion").HeaderText("Image Version").Add();

}).ActionFailure("OnActionFailure").AllowTextWrap(true).TextWrapSettings(text => { text.WrapMode(Syncfusion.EJ2.Grids.WrapMode.Header); }).AllowPaging().FilterSettings(filter => { filter.Type(Syncfusion.EJ2.Grids.FilterType.Menu); }).EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).ShowDeleteConfirmDialog(true).Mode(Syncfusion.EJ2.Grids.EditMode.Dialog); }).Toolbar(new List<string>
    () { "Add", "Edit", "Delete", "Update", "Cancel" }).Render()

На странице у меня есть:

<script>
    function OnActionFailure(args) {
        alert(args.error.status + " : " + args.error.statusText);
    }
</script>

Возвращает простое тостовое сообщение, когда значения нарушают ограничения БД, но значения пусты. Я хочу отправить полезную информацию пользователю.

Я могу уловить ошибку, что я возвращаю, чтобы сделать эту работу. Кроме того, я бы предпочел, чтобы использование получило окно сообщения, а не тост.

1 Ответ

0 голосов
/ 10 января 2020

Изменен код вашего контроллера, это решит вашу проблему

На

public ActionResult Insert(CRUDModel<Source> newItem)
{
  using (var context = new ImageStormEntities())
    {
     if(newItem.Value! = null)
     {
        context.Sources.Add(newItem.Value);
        context.SaveChanges();
     }
     else
     {
        throw new Exception("Empty values cannot be inserted");//Add custom 
        exception message 
     } 
    }

 return Json(newItem.Value);
}

и в вашем js добавьте известь это

<script> 
   function OnActionFailure(args) { 
     var errorMessage = args[0].error.responseText.split("Exception:")[1].split('<br>')[0];  //extract the message from args 
    alert(errorMessage); 
    //you will get exact error that you have returned from serverside in errorMessage
 } 
</script> 
...