我暂时没有在Razor引擎之外工作,但是在这个当前项目中我需要对模板进行更改。我试图在设计器客户端方面格式化字符串输出,但它失败了。目前的代码如下:
<table>
<!-- Data Result -->
<tr>
<!-- Here we are just padding the results to have a fixed length of (".") n = s.PadRight((t-n)+n1) -->
<td><%Eval("Text").ToString().PadRight((40 - Eval("Text").ToString().Length), Convert.ToChar("."));%></div>
<td><%Eval("Total").ToString().PadRight((10 - Eval("Total").ToString().Length), Convert.ToChar(" ")); %></div>
<td>(<%CalcPercent(Eval("Total").ToString());%>)</td>
</tr>
</table>
你知道我不能用这种方式格式化,并且必须在控制之外进行,或者可能在Eval处理它之前吗?没有意义,为什么它不起作用。
我是否必须首先将Eval()值分配给变量,然后处理格式化?
这是我得到的错误:
数据绑定方法,如Eval(),XPath()和Bind()只能是 在数据绑定控件的上下文中使用。
答案 0 :(得分:0)
我注意到你错过了一个等号,你的Eval
应该是:<%= Eval("Total") %>
。我不完全确定,但我知道通常的做法是:
<div class="..." style="...">
<%= Eval("Total") %>
</div>
你要么应用你的风格:
我不相信你能以这种方式追加,因为它不是一个真正的控制。我会建议以上。
答案 1 :(得分:0)
我无法让它工作,所以我选择了以下解决方案。有点像一个不同的人。
public static string GetFormattedStringPadRight(this string val, int length, char charToPad)
{
string returnValue = string.Empty;
if (!String.IsNullOrEmpty(val))
{
returnValue = val.ToString().PadRight((40 - val.Length), charToPad);
}
return returnValue;
}
然后在客户端:
<ItemTemplate>
<table>
<!-- Data Result -->
<tr>
<!-- Here we are just padding the results to have a fixed length of (".") n = s.PadRight((t-n)+n1) -->
<td><%#Eval("Text").ToString().GetFormattedStringPadRight(40, Convert.ToChar(".")) %></div>
<td><%#Eval("Total").ToString().GetFormattedStringPadRight(10, Convert.ToChar(" ")) %></div>
<td>(<%#CalcPercent(Eval("Total").ToString())%>)</td>
</tr>
</table>
</ItemTemplate>
我不知道为什么这种格式有效,但不是我以前的格式。感谢。