Плагин jTable с ASP .NET CORE 2.0 - PullRequest
       27

Плагин jTable с ASP .NET CORE 2.0

0 голосов
/ 14 февраля 2019

Я пытаюсь запустить плагин jTable для рендеринга моего GRID для выполнения операций CRUD в проекте .NET Core-2.0.После нескольких попыток отладки я не могу отобразить свои данные на VIEW с помощью плагина.

Я даже сделал то же самое в проекте ASP .NET-MVC, и плагин работал правильно.

Есть ли какие-либо изменения конфигурации или дополнения, которые мне нужно сделать, чтобы этот плагин работал правильно?

Ссылка на плагин: http://www.jtable.org

VIEW:

@{
ViewData["Title"] = "User Login Page";
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure- 
requests">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- STYLES -->
<link href="~/lib//jtable.2.4.0/themes/metro/blue/jtable.css" 
rel="stylesheet" type="text/css" />
<link href="~/lib//jtable.2.4.0/themes/metro/blue/jquery-ui.css" 
rel="stylesheet" type="text/css" />

<!-- SCRIPTS -->
<script type="text/javascript" src="https://code.jquery.com/jquery- 
1.9.0.min.js"></script>
<script type="text/javascript" 
src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery- 
ui.min.js"></script>
<script type="text/javascript"     
src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.js"> 
 </script>
<script type="text/javascript" src="~/lib/jtable.2.4.0/jquery.jtable.js"</script>

</head>
<body>
<div id="StudentTableContainer"></div>

<script type="text/javascript">

    $(document).ready(function () {

        alert("Reached");
        $('#StudentTableContainer').jtable({
            title: 'The Student List',
            actions: {
                listAction: '/MyLocalDashboard/GetItems'
            },
            fields: {
                StudentID: {
                    key: true,
                    create: false,
                    edit: false,
                    list: true,
                    title: 'Student ID',
                },
                StudentName: {
                    title: 'Student Name',
                    width: '23%'
                }
            }
        });

        //Load student list from server
        $('#StudentTableContainer').jtable('load');
    });

</script>

КОНТРОЛЛЕР:

public IActionResult Index()
{
 return View();
}

[HttpPost]
public JsonResult GetItems()
{
 string actionName=this.ControllerContext.RouteData.Values["action"].ToString();
  try
  {              
    //Example Add
    List<Student> studentList = new List<Student>() {
      new Student(){ StudentID=1, StudentName="Bill"},
      new Student(){ StudentID=2, StudentName="Steve"},
      new Student(){ StudentID=3, StudentName="Ram"},
      new Student(){ StudentID=1, StudentName="Moin"}
      };

    var json = JsonConvert.SerializeObject(studentList);
    return Json(new { Result = "OK", Records = json, TotalRecordCount = studentList.Count });
   }
  catch (Exception ex)
   {
    ViewBag.getActionName = actionName;
    return Json(new { Result = "ERROR", Message = ex.Message });
   }
 }

 private class Student
 {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }         

Было бы здорово, если бы кто-то мог направить меня в правильном направлении для установки этого плагина с помощью .NET Core-2.0.

ОБНОВЛЕНИЕ :

Мне не удалось найти ничего для этой проблемы в .NET Core.Если кто-то настроил этот плагин и может указать направление движения, это будет очень полезно.

Еще раз спасибо

1 Ответ

0 голосов
/ 28 марта 2019

Итак, после настройки этого плагина в .NET CORE и .NET MVC Framework здесь и получения ценного вклада от этого пользователя на основе этого обсуждения, решение этой проблемы в .NET CORE заключается в добавлении этой строки в Startup.cs по методу ConfigureServices:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); 

Причина, по которой этот плагин не работал с .NET CORE:

Поскольку стиль именования, используемый JTable, отличается от стиля ASP.NET CORE, это означает, что JSON, возвращаемый плагином, должен явно обрабатываться в .NET CORE.

После добавления нашего DefaultContractResolver () возвращается следующий JSON, который требуется плагину:

{
    "Result": "OK"
}

Исходный JSON, возвращаемый .NET CORE плагину:

{
    "result": "OK"
}

После добавления / изменения этой опции сетка JTable теперь правильно отображается в моем проекте .NET CORE.

Я надеюсь, что это поможет кому-то еще, кто сталкивается с подобной проблемой при настройке этого плагина.n .NET CORE

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...