2

どうして

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

The server tag is not well formed私のasp.netアプリケーションで例外が発生していますか?

なにが問題ですか ?を外せばrunat="server"OKです。しかし、コードビハインドから(グリッドビュー内にある)それを処理する必要があります。

どうもありがとう !!

4

4 に答える 4

3

私のグリッド ビューでは、 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>

同様に、あなたの<a>要素で行うことができますhref

于 2013-01-21T10:24:36.553 に答える
3

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") %>")'

EDIT 上記でも、href 値にエスケープされていない二重引用符があるため、問題のある html が生成されます。だからこれを試してください:

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

EDIT データバインディング式が上記で評価されていないようです。Eval書式設定にオーバーロードを使用する以下の式を試してください

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

EDIT さらに別の方法は、コードビハインドメソッドを使用することです-たとえば、

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

そしてコードビハインドで

protected string GetFileLink(object dataItem)
{
   return string.Format("javascript:downloadFile('{0}');", 
           DataBinder.Eval(dataItem, "TempKey")); 
}
于 2013-01-21T10:21:09.227 に答える
2

なにが問題ですか ?

ASP.NET パーサーは、ネストされた二重引用符を混乱させます。VS2012ではもう起こらないようです。

runat="server" を削除すれば OK です。しかし、コードビハインドから(グリッドビュー内にある)それを処理する必要があります。

DataItem のクラスがある場合は、キャストを試すことができます。

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

最善の方法は、分離コードで href を設定することです (これは、runat="server" コントロールを持つポイントです)。

これが役立つことを願って、

于 2013-01-21T10:41:25.410 に答える
1

次のコードを試してください:

onclick='<%# "return jsPopup('UpdateProbAct.aspx?Table=problems&Deptid=" + Eval("department") %>' 
于 2013-01-21T11:03:10.263 に答える