MVC helper inside a template

谁都会走 提交于 2020-01-03 16:55:24

问题


I am trying to use a kendo MVC helper inside a template (remote template file loaded like: http://docs.kendoui.com/howto/load-templates-external-files#remote-templates. I have a controller that sends to the client the generated markup)

My template file is something like:

<script id="my-pager-template" type="text/x-kendo-template">
    My pager

    @(Html.Kendo().ListView<Business.Data.MyPage>()
        .Name("myPagerListView")
        .TagName("div")
        .ClientTemplateId("my-pager-item-template")
        .DataSource(dataSource => dataSource.Read(read => 
            read.Action("GetMyPages","Page")
            )
        ).ToClientTemplate())

</script>

<script id="my-pager-item-template" type="text/x-kendo-template" >
    <div class="k-button" data-pager-item-pageid="${PageID}" data-pager-item-pagename="${Name}">
        <span>${ButtonText}</span>
    </div>
</script>

But the generated markup is giving me an Uncaught SyntaxError: Unexpected token < in my browser console (chrome).

The markup generated by the helper is like this:

<div id="myPagerListView"></div>
<script>
    jQuery(function(){jQuery("\#myPagerListView").kendoListView({"dataSource":{"transport":{"prefix":"","read":{"url":"/Page/GetMyPages"}},"serverPaging":true,"serverSorting":true,"serverFiltering":true,"serverGrouping":true,"serverAggregates":true,"type":"aspnetmvc-ajax","filter":[],"schema":{"data":"Data","total":"Total","errors":"Errors","model":{"fields":{"PageID":{"type":"number"},"Name":{"type":"string"},"ButtonText":{"type":"string"}}}}},"template":kendo.template($('\#my-pager-item-template').html())});});
<\/script>

</script>

Can I use kendo helpers this way? (In this post, it says that it can be used: Can I use Kendo MVC helpers inside templates?)


回答1:


I got that message a lot of times, your code is fine, the problem comes retrieving the data, kendo deserialize what it recieves from read.Action("GetMyPages","Page"), you probably are retrieving an HTML page instead of a json, so it tries to serialize something like "<html ...." and here you got the error, just check the url on chrome to check if you recive an json

i mean check http://yourdomain.com/Pages/GetPages/ (or the routing according to your app), you probably get an HTML page




回答2:


I had this exact issue also. I have come to realise (over the past 3 hours :( ) that this is because I was using ajax then the jquery html function to load the template file and that the error was happening with in jquery's function as it tried to parse than execute the template file which has been mangled for an unknown reason by kendo.
(escaping that script tag and in my case inserting buttons in that space).
Fortunatly when kendo Its self tries to use the template it does work.
To get around this problem I rendered the partial view directly on the page.

Hope this helps.



来源:https://stackoverflow.com/questions/20596891/mvc-helper-inside-a-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!