繁体   English   中英

Gridview中的锚标记没有很好地形成服务器标记

[英]The server tag is not well formed for anchor tag in Gridview

为什么

 <a id="link" runat="server" href="javascript:downloadFile('<%#Eval("TempKey") %>')"><%#Eval("ShortFileName") %></a>

给我The server tag is not well formed在我的asp.net应用程序中The server tag is not well formed异常?

怎么了 ? 如果我删除runat="server" ,那就没问题。 但我需要从后面的代码处理它(在gridview中)。

非常感谢 !!

你得到The server tag is not well formed错误,因为你在双引号中使用双引号使attribute-name="value"类型的语法变为hay-wire。 它将被ASP.NET编译器解析为类似的东西

href="javascript:downloadFile('<%#Eval(" TempKey ") %>')">

TempKey将显示为单独的属性,没有值等。
当您删除服务器标签时,ASP.NET不会解析它的html元素语法,而是按原样发出它(它的无效html以及浏览器更宽容)。

您应该在单引号内尝试它,例如

href='javascript:downloadFile("<%#Eval("TempKey") %>")'

编辑上面仍然会产生有问题的html,因为href值会有未转义的双引号。 试试这个:

href='javascript:downloadFile(&quot;<%#Eval("TempKey") %>&quot;)'

编辑似乎数据绑定表达式未在上面进行评估。 请尝试下面的表达式,它使用Eval重载进行格式化

href='<%# Eval("TempKey", "javascript:downloadFile(&quot;{0}&quot;)") %>'

编辑另一种选择是使用一些代码隐藏方法 - 例如,

href='<%# GetFileLink(Container.DataItem) %>)'

在代码隐藏中

protected string GetFileLink(object dataItem)
{
   return string.Format("javascript:downloadFile('{0}');", 
           DataBinder.Eval(dataItem, "TempKey")); 
}

在我的网格视图中,我使用了Linkbutton并在OnClientClick上应用了以下代码。

    <asp:TemplateField HeaderText="Print">
    <ItemTemplate>
     <asp:LinkButton ID="lbtn_prntmenu" runat="server" CssClass="mlinks" CommandArgument='<%#Eval("ID")%>' CommandName="Print" Text="Print" OnClientClick='<%#Eval("ID","javascript:downloadFile(\"{0}\");")%>'></asp:LinkButton>
</ItemTemplate>

</asp:TemplateField>

类似地,你可以在href上使用<a>元素

怎么了 ?

ASP.NET解析器与嵌套的双引号混淆。 我只是意识到VS2012似乎不再发生了。

如果我删除runat =“server”,那就没问题。 但我需要从后面的代码处理它(在gridview中)。

如果你有一个DataItem类,你可以尝试转换:

<a id="link" runat="server" href="javascript:downloadFile('<%#((YourNamespace.YourClass)Container.DataItem).TempKey%>')"><%#Eval("ShortFileName") %></a>

最好的办法应该是在codebehind中设置href(这是一个拥有runat =“server”控件的点)

希望这会有所帮助,

请尝试以下代码:

onclick='<%# "return jsPopup('UpdateProbAct.aspx?Table=problems&Deptid=" + Eval("department") %>' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM