[英]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.