尝试在Repeater中使用String.Format但是语法错误

时间:2013-01-30 21:11:11

标签: c# asp.net data-binding repeater string.format

我不明白这个代码我做错了什么。我认为这可能与("')s

有关
<asp:TextBox ID="txtPassportNumber" runat="server" MaxLength="19"
    Text="<%#  String.Format('{0}{1}','######',((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>"
    Enabled="<%# IsOutsideTenDayCutoff %>"></asp:TextBox>

我收到太多字符错误

切换到:

 <asp:TextBox ID="txtPassportNumber" runat="server"
     Text="<%#  String.Format("{0}{1}","######",((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>"
     Enabled="<%# IsOutsideTenDayCutoff %>"></asp:TextBox>

并收到此错误:

分析程序错误消息:服务器标记格式不正确。

最终守则,得益于良好的帮助:

Text='<%# (((TSAPassenger) Container.DataItem).Passport.DocumentNumber != null &&  ((TSAPassenger) Container.DataItem).Passport.DocumentNumber != "") ? "******" + ((TSAPassenger) Container.DataItem).Passport.DocumentNumber.ToString().Remove(0,6) : "" %>'

4 个答案:

答案 0 :(得分:3)

您需要确保使用Text属性的单引号,例如Text='yourstuff'

然后在bind语句中使用双引号。绑定中的代码必须是vanilla c#,如果它不能在.cs文件中编译,它也不会内联编译,单引号表示c#中的char,而不是字符串。

这有效:

<asp:TextBox ID="txtPassportNumber" runat="server"
    Text='<%# string.Format("{0}{1}", "######", ((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>'
    Enabled="<%# IsOutsideTenDayCutoff %>"></asp:TextBox>

注意单引号和双引号。您应该可以按原样复制和粘贴它。

答案 1 :(得分:1)

你应该使用双引号而不是单个

<asp:TextBox ID="txtPassportNumber" runat="server" MaxLength="19" Text="<%#  String.Format("{0}{1}","######",((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>" Enabled="<%# IsOutsideTenDayCutoff %>"></asp:TextBox>

答案 2 :(得分:1)

您应该在'属性中反转"Text的使用情况。而不是:

Text="<%#  String.Format('{0}{1}','######',((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>"

使用:

Text='<%#  String.Format("{0}{1}","######",((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>'

您必须在C#代码之间提供有效的<%# ... %>语法。 '"{0}{1}"''######'C#语法中均无效,因为''只能包含char s 'a''0'和等等。)

答案 3 :(得分:1)

您无法使用'定义字符串。你现在正在做的是尝试创建一个不可行的多字符字符。

尝试将其更改为:

Text='<%#  String.Format("{0}{1}","######",((TSAPassenger) Container.DataItem).Passport.DocumentNumber.Text.Remove(0,6)) %>'