你得到了The server tag is not well formed
錯誤,因爲你在雙引號內使用雙引號使attribute-name="value"
類型的語法變爲乾草。它將由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}")") %>'
EDIT表達 另一種替代方案是使用一些代碼隱藏方法 - 例如,
href='<%# GetFileLink(Container.DataItem) %>)'
而在代碼隱藏
protected string GetFileLink(object dataItem)
{
return string.Format("javascript:downloadFile('{0}');",
DataBinder.Eval(dataItem, "TempKey"));
}
是否需要將變量連接到字符串? – Vogel612
@ Vogel612,不明白 - 'Eval'表達式是一個服務器端代碼,可以替換java腳本字符串中的字符 - 你應該在哪裏連接? – VinayC
@VinayC - >現在錯誤已解決。但它不能正確顯示。 這是我的代碼。 ** ** <%#Eval("ShortFileName") %> 但它顯示像** 「)」 ID = 「ctl00_PlaceHolderMain_ctl00_gvAttachment_ctl02_link」> aaa.docx ** 應該只顯示** ** aaa.docx – kevin