2016-05-04 11 views
0

Mein Razor sieht Ich habe Vorlage wie untenJsonConvert SerializeObject mit Func Eigenschaft

@helper EditLink(SampleEmployeeModel data) 
    { 
    <b> 
     @Html.ActionLink("Edit", "Edit", new { id =data.ID }, new { @class = "modal_link" }) 
    </b> 
} 

Dann habe ich diese Vorlage verwenden in meinem Grid-Steuerelement wie unten. Die Grid-Helper-Methode arbeitete basierend auf JQuertDataTable.

@(
     Html.Grid<SampleEmployeeModel>() 
     .SetName("GridEmployeeServerSide") 
     .Columns(columns => 
     { 
      columns.Bound(b => b.ID).EnableSearch(false); 
      columns.Bound().Template(o => EditLink(o)).SetTitle("Edit"); 
     }) 
     .Pageable(a => a.SetPageType(PageType.full_numbers)) 
     .DataSource(a => 
     { 
      a.Read(read => read.Action("RRDLDataTableAjaxData")); 
      a.ServerSideProcessing(true); 
     }) 
    ) 

sollte die RRDLDataTableAjaxData den Datensatz zurückgeben wie

unten
[ 
    {"ID":1,"Edit":"<b>\r\n<a class=\"modal_link\" href=\"/Samples/Edit/1\">Edit</a>\r\n</b>\r\n"}, 
    {"ID":2,"Edit":"<b>\r\n<a class=\"modal_link\" href=\"/Samples/Edit/2\">Edit</a>\r\n</b>\r\n"}, 
    {"ID":3,"Edit":"<b>\r\n<a class=\"modal_link\" href=\"/Samples/Edit/3\">Edit</a>\r\n</b>\r\n"} 
] 

Ich erwarte Ergebnis bin immer wenn Netzlast erstes Mal, wenn ich auf die 2. Seite gehen, um es zu erwarten JSon nicht zurück.

Wie die Helper-Methode HTML Gitter erzeugen ist Es Faltenbalgbefestigung Code in Razor Ansicht schreiben

<table class="table table-striped nowrap dt-responsive" data-rrdl-grid="" id="RRDLGrid21V52" width="100%"> 
     <thead> 
      <tr> 
       <TH></TH> 
       <TH></TH> 
      </tr> 
     </thead> 
     <tbody></tbody> 
    </table> 

    <script type='text/javascript'> 
    var dataTable_GridEmployeeServerSide_Option = { 
    "columns": [ 
    { 
     "targets": 1, 
     "defaultContent": "", 
     "data": "ID", 
     "title": "ID", 
     "visible": true 
    }, 
    { 
     "targets": 2, 
     "defaultContent": "", 
     "data": "Edit", 
     "searchable": true, 
     "title": "Edit", 
     "visible": true 
    } 
    ], 
    "dom": "<'table-header-row' <'dom-left' ><'dom-center' ><'dom-right' lp>>t", 
    "autoWidth": false, 
    "deferRender": true, 
    "info": false, 
    "lengthChange": false, 
    "ordering": true, 
    "paging": true, 
    "processing": false, 
    "searching": false, 
    "serverSide": true, 
    "stateSave": false, 
    "ajax": { 
    "contentType": "application/json; charset=utf-8", 
    "url": "../Samples/RRDLDataTableAjaxData", 
    "dataType": "json", 
    "dataSrc": "data" 
    }, 
    "destroy": false, 
    "orderClasses": false, 
    "orderMulti": false, 
    "pageLength": 10, 
    "pagingType": "full_numbers", 
    "scrollCollapse": false, 
    "language": { 
    "paginate": { 
     "first": "<i class=\"icon-left\"></i><i class=\"icon-left\"></i>", 
     "last": "<i class=\"icon-right\"></i><i class=\"icon-right\"></i>", 
     "next": "<i class=\"icon-right\"></i>", 
     "previous": "<i class=\"icon-left\"></i>" 
    } 
    }, 
    "OddRowColor": null, 
    "EvenRowColor": null, 
    "FixedRowHeight": 0, 
    "HighlightSearchText": false, 
    "SelectCheckBox": false, 
    "RowTemplate": null 
} 
    $(document).ready(function() { 
_DataTable(GridEmployeeServerSide);} 
) 
    </script> 

Meine Frage ist, wie editlink passieren in Hilfs-Server, wenn der Benutzer klicken 2. Seite.

+3

Sie können einen Delegaten serialisiert. – SLaks

+0

Eigentlich möchte ich die MVZ Server Seite Razor-Vorlage in JSON serialisieren. Ist eine andere Möglichkeit, das zu tun. –

+1

Was würde das bedeuten? Vorlagen sind keine Objekte. – SLaks

Antwort

0

Der Fehler zeigt eine andere Eigenschaft an, die für den Fehler verantwortlich ist. Klar ist es ApplicationInstance, die den Zirkelbezug verursacht. und es hat nichts mit Code-Snippet zu tun.

Nach Json.Net Dokumentation können Sie zirkuläre Referenz Problem mit unter Einstellung vermeiden:

var jsonSerializerSettings = new JsonSerializerSettings 
{ 
    PreserveReferencesHandling = PreserveReferencesHandling.Objects 
}; 
+0

Ich bekomme Fehler wie unten Kann nicht Delegaten über nicht verwalteten Funktionszeiger, dynamische Methoden oder Methoden außerhalb der Delegat-Ersteller Assembly serialisieren. –

+0

Aktualisieren Sie die Frage mit Fehler. – vendettamit