Asp.net mvc 4 逃逸+;(外加)登录剑道网格ASP.NET MVC客户端模板

Asp.net mvc 4 逃逸+;(外加)登录剑道网格ASP.NET MVC客户端模板,asp.net-mvc-4,kendo-ui,Asp.net Mvc 4,Kendo Ui,我在为剑道网格中的列定义ASP.NET MVC ClientTemplate时遇到问题,因为“+”符号被去掉,这导致客户端生成的模板由于语法错误而失败 我的客户模板是: c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#") i、 加号被呈现为一个空格(我想类似于URL编码)。如果我直接使用fromJS,这个模板就可以完美地工作(见此) 有人知道我如何避开+符号以便在ClientTemplate中使用

我在为剑道网格中的列定义ASP.NET MVC ClientTemplate时遇到问题,因为“+”符号被去掉,这导致客户端生成的模板由于语法错误而失败

我的客户模板是:

c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#")
i、 加号被呈现为一个空格(我想类似于URL编码)。如果我直接使用fromJS,这个模板就可以完美地工作(见此)

有人知道我如何避开+符号以便在ClientTemplate中使用它吗

我尝试过使用“
\+
”(呈现为“
\
”)、“
\+
”(无效的C)、
&&43
(与
+
相同,但其他如
,;
“工作正常”)

有什么想法吗?谢谢

作为参考,我使用的是Razor标记和2012年第2季度的剑道版本(不能使用第3季度,因为我们从Telerik升级时受到jQuery版本的限制)


注意:在有人问我为什么要这样做之前,我的ClientTemplate实际上更复杂,但这是一个简单的例子来说明问题:-)

你是否尝试过采用算术并将其置于报价之外,如下所示:

c.Template(@).ClientTemplate(“#='Hello'”+“Name#”)

找到了一个解决方案(可能更像是一个解决方法)。我没有编写内联JavaScript,而是将代码移动到一个单独的JS函数,并从模板代码中调用该函数,例如:

#=myFunctionToDoComplicatedStuff(Name)#

老实说,出于可测试性、重用性和一般良好实践的考虑,这可能是无论如何都应该采取的方法。不过,对于一些琐碎的事情来说,这有点烦人

不管它值多少钱,我只是遇到了这个问题,通过减去一个负值来解决它。例如:

kendo.parseFloat(Amount)  - -kendo.parseFloat(Tip)

我已经找到了一个解决方案,使用了一个

c.Template(@).ClientTemplate(“#='Hello'(➕;{Name#”)

这将导致

template: "#='Hello + Name#"

如果您只需要一个简单的解决方案来在ClientTemplate中进行连接,以避免加号编码问题,您可以使用javascript concat函数,如下所示:

c.Template(@<text></text>).ClientTemplate("#='Hello'.concat(Name)#")
c.Template(@).ClientTemplate(“#='Hello'.concat(Name)#”)
我检查了源代码1,在将所有模板呈现给JS之前,MVC包装器正在对所有模板调用
HttpUtility.UrlDecode
。因此,要转义+号(或任何其他保留的URL字符),请使用。在本例中为
%2B

c.Template(@<text></text>).ClientTemplate("#='Hello' %2B Name#")
c.Template(@).ClientTemplate(#='Hello'%2B Name'))

1 v2013.3,src\Kendo.Mvc\Kendo.Mvc\UI\Grid\Columns\GridColumnBase.cs,第135行。我怀疑这是一个bug,他们打算调用
HttpUtility.UrlEncode

我的实际代码比字符串串联更复杂-有一点逻辑作为条件语句的一部分,实际上需要做算术加法,所以我这么做了需要+。到目前为止,我唯一的解决办法是将JS移到一个函数中并调用它,但最好在模板中这样做,以使其保持一致。干杯。
c.Template(@<text></text>).ClientTemplate("#='Hello' %2B Name#")