簡體   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