3

サードパーティのコンポーネントが干渉しているように見えResponse.Write、その中のコンテンツResponse.Write("")が他の HTML の前にレンダリングされるという問題に遭遇しました。例えば:

<html><head><title><% Response.Write("HELLO WORLD") %>

としてレンダリングされます

HELLO WORLD<html><head>...

<%= %>ただし、ブロックを使用してレンダリングされたコンテンツはすべて正しく機能します。以下のコードは完全に機能します。

<html><head><title><%="HELLO WORLD"%>

私はいつもそれ<%=が単に の省略形だと思っていましたResponse.WriteMSDN で見つけたものから、最終的には Response.Write に変換されることがわかりましたが、その間にいくつかの手順があるよう<%=です。

<%= %>2つのレンダリングが異なる理由を推測したり、ブロックの処理方法を説明するドキュメント/情報を教えてくれたりする人はいますか?

更新:問題の原因となったコントロールは、2009 Q1 リリースの Telerik AjaxManager コントロールでした。Q2 コントロールにアップグレードすると、問題が解決しました。

残念ながら、ソースにアクセスできないため、コントロールがこの動作を引き起こした理由を突き止めることができませんでした。問題は解決されましたが、そもそもなぜそれが存在したのかについてはまだ非常に興味があります。

4

1 に答える 1

6

<%= "foo" %> は Response.Write("foo"); に変換されます。コンパイルしたら。これを確認するには、ASP.NET 一時ファイル フォルダーを掘り下げ、Reflector を使用して見つけた dll を逆コンパイルします。

于 2009-08-27T20:49:36.220 に答える