[英]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("<%#Eval("TempKey") %>")'
编辑似乎数据绑定表达式未在上面进行评估。 请尝试下面的表达式,它使用Eval
重载进行格式化
href='<%# Eval("TempKey", "javascript:downloadFile("{0}")") %>'
编辑另一种选择是使用一些代码隐藏方法 - 例如,
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.