ASP.NET:服务器标记的格式不正确

本文关键字:格式 不正确 NET 服务器 ASP | 更新日期: 2023-09-27 18:26:08

我已经尝试将progressBar放入我的GridView有一段时间了。遗憾的是没有成功。我目前有以下几种:

<asp:GridView ID="gvShow" runat="server" AutoGenerateColumns="False" DataKeyNames="Progress" Width="100%">
    <Columns>
        <asp:BoundField DataField="Progress" HeaderText="Progress" />
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:Literal ID="lbProgress" runat="server" Text="<div class='progress'><div class='progress-bar' role='progressbar' aria-valuenow='<%#Eval("Progress") %>' aria-valuemin='0' aria-valuemax='100' style='width: 60%;'><span class='sr-only'>60% Complete</span></div></div>"></asp:Literal>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

这导致语法分析器错误(服务器标记格式不正确。)。如果我用任何值替换eval,它就可以正常工作。我想我遗漏了一些东西,但我真的找不到了。

ASP.NET:服务器标记的格式不正确

由于某些原因,所有标记都是Literal控件的文本。所以引号有问题,因为Text=""Eval需要双引号。

就我个人而言,我认为没有理由在这里使用Literal,你可以按原样使用标记,问题就会消失:

<ItemTemplate>
    <div class='progress'>
        <div class='progress-bar' role='progressbar' aria-valuenow='<%#Eval("Progress") %>' aria-valuemin='0' aria-valuemax='100' style='width: 60%;'>
            <span class='sr-only'>60% Complete</span>
        </div>
    </div>
</ItemTemplate>

您必须使用Eval方法而不是Text方法。

<ItemTemplate>
<div class='progress'>
    <div class='progress-bar' role='progressbar' aria-valuenow='<%#Eval("Progress") %>' aria-valuemin='0' aria-valuemax='100' style='width: 60%;'>
        <span class='sr-only'>60% Complete</span>
    </div>
</div>