2013-02-26 50 views
0

我在评估Kendo模板中的变量值时遇到了问题。Kendo模板:评估C#代码块内的变量值时出错

在此代码中,变量控制ID按预期进行评估。它返回“测试”

<script id="treeview-template" type="text/kendo-ui-template"> 
    # var controlID= "test"; # 
    @Html.CheckBox("#=controlID#") 
</script> 

但是,当我在C#代码块中使用它,变量被评价为“#=控件ID#”代替。

<script id="treeview-template" type="text/kendo-ui-template"> 
    # var controlID= "test"; # 
    @{ 
     Html.CheckBox("#=controlID#"); 
    } 
</script> 

我怎样才能得到变量的剑道模板一个C#代码块中正确的价值?

任何帮助,将不胜感激。

回答

0

我从未使用过剑道,不过我倒是希望工作的基础上,还有你的语法:

<script id="treeview-template" type="text/kendo-ui-template"> 
    # var controlID= "test"; # 
    @{ 
     Html.CheckBox(controlID); 
    } 
</script> 
+0

恐怕行不通。在Kendo模板中,为了评估HtmlHelper中的变量,你必须用下面的变量括起来:“#=#”。这就是为什么你给的解决方案返回一个编译错误,说“controlID不存在”。不管怎么说,还是要谢谢你! :) – 2013-02-26 08:16:02

3

一个Kendo Template基本上是翻译成JavaScript和执行上客户端(在浏览器中)。

你的第一个配置工作,因为以下

@Html.CheckBox('#=controlID#') 

呈现为

<input type="checkbox" name="#= controlID #" id="#= controlID #" /> 

后者是一个有效的剑道模板。

但是其他代码块不会输出任何内容,因为您使用的是@{ }而不是@。这只是表示一组可执行的服务器端代码(C#),它不输出任何HTML。

菲尔哈克拥有一支优秀的博客文章,解释的剃刀语法:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

+0

不能找到完美的解决方案,所以我只是做了一个工作。但它有帮助,但.. +1谢谢! :) – 2013-03-09 06:34:18