1

2行目は機能するのに最初の行は機能しないのはなぜですか? 「サーバータグの形式が正しくありません」と表示されます。2 行目にコピーした Guid は、データベースから直接取得したものです。

< asp:Image runat="server" ImageUrl="~/Images/Avatar/Avatar.aspx?UserId=<%#DataBinder.Eval(Container.DataItem, "UserId")%>" />

< asp:Image runat="server" ImageUrl="~/Images/Avatar/Avatar.aspx?UserId=22AA736E-BD1B-4623-8E76-4769051F2E60" />
4

4 に答える 4

1

ImageUrl属性の値を一重引用符で囲みます。

<asp:Image runat="server" 
           ImageUrl='~/Images/Avatar/Avatar.aspx?
              UserId=<%#DataBinder.Eval(Container.DataItem, "UserId")%>' />
于 2012-08-15T14:48:13.930 に答える
1

別の方法は、 を使用することString.Format(...)です。

<asp:TemplateField HeaderText="Avatar" SortExpression="LastName, FirstName">
    <ItemTemplate>
        <asp:Image ID="Image1" runat="server" ImageUrl='<%# String.Format("~/Images/Avatar/Avatar.aspx?UserID={0}", Eval("UserID").ToString()) %>' />
    </ItemTemplate>
</asp:TemplateField>
于 2012-08-15T15:43:58.037 に答える
0

または試してみてください

< asp:Image runat="server" ImageUrl='<%#"~/Images/Avatar/Avatar.aspx?UserId=" + DataBinder.Eval(Container.DataItem, "UserId")%>' />

あなたの問題は二重引用符でした。あなたの開始引用符は二重引用符であったため、「UserID」の開始引用符で閉じられていました。とにかく、データバインドするときは常に一重引用符を使用する必要があります。

于 2012-08-15T14:49:36.173 に答える
0

<%#DataBinder.Eval(Container.DataItem, "UserId")%>ラベルに印刷してみてください。Guid のフォーマット方法は、データベースでの表示とまったく同じではない場合があります。私の記憶が正しければ、Guid の周りに {} があったかもしれません。

于 2012-08-15T14:53:03.050 に答える