2016-05-04 54 views
0

我的Razor视图我的模板像波纹管JsonConvert SerializeObject与函数功能属性

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

然后我在我的像波纹网格控制使用此模板。 Grid Helper方法基于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); 
     }) 
    ) 

的RRDLDataTableAjaxData应该返回记录像波纹管

[ 
    {"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"} 
] 

我收到预期的结果,当电网负荷第一次,如果我去第2页它不会返回预期的JSON。

辅助方法如何生成HTML电网是 它写娄代码为Razor视图

<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> 

我的问题是如何通过EDITLINK到辅助服务器时,用户点击第二页。

+3

你不能序列化的委托。 – SLaks

+0

其实我想将mvc服务器端Razor模板序列化到Json中是否有其他方法可以做到这一点。 –

+1

这甚至意味着什么?模板不是对象。 – SLaks

回答

0

错误显示不同的属性对错误负责。显然它是ApplicationInstance这是造成循环参考。它与提供的代码片段无关。

根据Json.Net文档,你可以用下面的设置来避免循环引用问题:

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

我得到像下面的错误 无法通过非托管函数指针,代理创建者程序集外的动态方法或方法序列化委托。 –

+0

更新错误的问题。 – vendettamit