2017-08-31 253 views
0

使用以下代碼填充數據以使用Ajax填充DataTableMVC將json編碼爲DataTables

我的問題是,當我將公司名稱保存到數據庫時,我使用了AllowHtml(需要)。

所以我的問題是: 我如何在圖像編碼標題= asset.CompanyName這樣的數據表沒有得到腳本/ HTML什麼樣的?

Some Name <b>alert("hmm")</b>

// GET: Jsons/Customers 
    public JsonResult Customers([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel) 
    { 

     Db db = new Db(); 

     IQueryable<CustomersDTO> query = db.Customers.Where(x => x.CompanyId == companyId); 

     var totalCount = query.Count(); 

     #region Filtering 
     // Apply filters for searching 
     if (requestModel.Search.Value != string.Empty) 
     { 
      var value = requestModel.Search.Value.Trim(); 

      query = query.Where(p => p.Id.ToString().Contains(value.ToString()) || 
            p.CompanyName.Contains(value) 

           ); 
     } 

     var filteredCount = query.Count(); 

     #endregion Filtering 

     #region Sorting 
     // Sorting 
     var sortedColumns = requestModel.Columns.GetSortedColumns(); 
     var orderByString = String.Empty; 

     foreach (var column in sortedColumns) 
     { 
      orderByString += orderByString != String.Empty ? "," : ""; 
      orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc"); 
     } 

     query = query.OrderBy(orderByString == string.Empty ? "Id asc" : orderByString); 

     #endregion Sorting 

     // Paging 
     query = query.Skip(requestModel.Start).Take(requestModel.Length); 


     var data = query.Select(asset => new 
     { 

      Id = asset.Id, 
      //Allowing HTML for CompanyName 
      Title = asset.CompanyName, 
      Zip = asset.Zip, 
      City = asset.City, 
      Active = asset.Active 

     }).ToList(); 

     return Json(new DataTablesResponse(requestModel.Draw,data, filteredCount, totalCount), JsonRequestBehavior.AllowGet); 
    } 

代碼頁:

  var assetListVM;  
      $(function () {  
       assetListVM  = 
        {  
        dt: null, 
         init:  function  () 
         {  
         dt = $('#assets-data-table').DataTable(
          { 
           "language": 
           { 
            "url": "/Scripts/plugins/dataTables/Swedish.json" 
                 }, 
           "serverSide": true,  
           "processing": true,  
           "ajax": 
           {  
            "url": "@Url.Action("Customers", "Jsons")", 
            "data": function (d) 
            { 
             d.parameter1 = "Id"; 
             d.parameter2 = "Title"; 
            } 
           },  

           "columns": 
           [  
            { "title": "Id", "data": "Id", "searchable": true },  
            { 
             "title": "Rubrik", 
             "searchable": true, 
             "data": null, 
             "className": "class1 class2", 
             "orderable": false, 
             "render": function (data, type, row) { 
              var someUrl = "/Admin/ShowCustomer/" + data.Id; 
              return '<a href="' + someUrl + '" class="openEditor">' + data.Title + '</a>'; 
             } 
            }, 
            { "title": "Postnr", "data":  "Zip",  "searchable":  true  },  
            { "title": "Stad", "data":  "City",  "searchable":  true  },  
            { "title": "Aktiv", "data": "Active", "searchable": true } 
           ], 
           "lengthMenu":  [[10,  25,  50,  100],  [10,  25,  50,  100]], 
          });  
         }  
        }  

       // initialize the datatables  
       assetListVM.init();  

      }); 
+0

使用代碼編輯我的帖子 – Katey

回答

0

的問題是你是不是HTML編碼data.Title

return '<a href="' + someUrl + '" class="openEditor">' + htmlEncode(data.Title) + '</a>'; 

您需要建立自己的htmlEncode實現,或者使用this one

return '<a href="' + someUrl + '" class="openEditor">' + data.Title + '</a>'; 

應替換。