jTemplates中的服务器代码块?可能?

时间:2012-02-10 18:28:28

标签: jquery asp.net jtemplates

我一直在使用jTemplates,并尝试使用jQuery + jTemplates + Web Services完全构建一个站点。事情变得非常好,直到我偶然发现这样的情况,我需要添加一些服务器控件或需要使用代码块<%= DoSomething(param)%>来解决后面代码中的一些数据。在模板渲染中。

考虑以下jTemplates的精简版本:

<script type="text/html" id="ContentTemplates">
    {#template MAIN}
        {#foreach $T.Products as product}
            <div id="div-product-{$T.product.Id}" class="product-wrapper">
                {#include Content root=$T.product}
            </div>
        {#/for}
    {#/template MAIN}

    {#template Content}
        <div class="view-container">
            <p>Id: {$T.Id}</p>
            <p>Desc: {$T.Desc}</p>
            <p>Vendor Id: {$T.VendorId}</p>

            <!-- Vendor name doesn't supplied by the web service, 
                  it needs to be resolved using ASP.NET server code -->
            <p>Vendor Name: <%= GetVendorName({$T.VendorId}) %></p>
            <!-- i was hoping to do something like this, 
                  but apparently it wouldn't work this way -->
        </div>
    {#/template Content}
</script>

现在我因为未能实现像这样简单的事情而在墙上敲我的头..这是我错过了什么?或者是jTemplates真的应该用于渲染简单的HTML布局吗?模板引擎是否能够解析服务器代码块?或者我只是被骗了?

1 个答案:

答案 0 :(得分:0)

这就是我最终的结果:

<p>Vendor Name: <span class="vendor-name" vid="{$T.VendorId}"></span></p>

我没有尝试在渲染过程中执行服务器代码(这是不可能的),而是在占位符<span>上渲染id,然后使用jQuery在以后注入值。

// After template is rendered
$.each($(".vendor-name"), function(){
    $this = $(this);
    var vid = $this.attr("vid");
    $this.append("<%= GetVendorName(" + vid + ") %>")
});

Hacky,但至少它有效;)