将c#list绑定到jQuery模板

时间:2012-07-10 12:29:26

标签: jquery asp.net-mvc webforms jquery-templates

将C#List绑定到jQuery模板的最佳方法是什么? 我到目前为止找到的唯一方法如下:

JavaScriptSerializer serializer = new JavaScriptSerializer();
var jsonData  = serializer.Serialize(ListOfObjects);
Response.Write("<script type='text/javascript'>var jsonData = " + jsonData  + ";</script>");
页面上的

$("div").html($("#myTemplate").tmpl(jsonData ));

<script id="myTemplate" type="text/x-jquery-tmpl">
  ${}
</script>

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

不确定您的服务器端架构是什么样的,但是使用类似于此处所示的技术对Web服务(WCF或其他)或HttpHandler进行jQuery ajax调用会更清晰。文章:

http://www.diplo.co.uk/blog/2011/3/1/using-jquery-templates-to-bind-to-json-data.aspx

此示例使用JSONP,如果没有跨域调用,则不需要。

<script id="flickrTemplate" type="text/x-jquery-tmpl">
    <li>${title}</li>
</script>

<script type="text/javascript">
    $(document).ready(function()
    {
        $.ajax({
            url: "http://api.flickr.com/services/feeds/photos_public.gne",
            data: "format=json",
            jsonp: "jsoncallback",
            dataType: "jsonp",
            success: function(data)
            {
                $("#flickrTemplate").tmpl(data.items).appendTo("#placeholder");
            }
        });
    });
</script>

<ul id="placeholder"></ul>

答案 1 :(得分:0)

使用ASMX Web服务或ASPX页面中的WebMethod,.NET很好地将您的List<Object>序列化为JavaScript对象数组:

[{Prop1: value, Prop2: value}, {Prop1: value2, Prop2: value2}]

有关详细信息,请参阅https://stackoverflow.com/a/11314818/622129