0

なぜこれが機能しないのですか?

 <input type="button" id="btnAccept" value="Accept" onclick='<%# String.Format("accept('{0}','{1}','{2}','{3}-{4}');", Container.DataItem("PositionID"), Container.DataItem("ApplicantID"), Container.DataItem("FullName"), Container.DataItem("DepartmentName"), Container.DataItem("PositionTitle"))%>' />

onclick は何もしません。

4

1 に答える 1

2

最善の策は、生成された HTML を確認することです。生成された HTML をテキスト形式でチェックし、画面上でどのようにレンダリングされるかを常に確認することは、非常に良い習慣だと思います。このようなエラー (生成された HTML で簡単に見つけることができます) に加えて、あるブラウザーでは意図したとおりにレンダリングされ、別のブラウザーではひどくレンダリングされる可能性のある HTML の他の無効な使用法を検出するのに役立ちます。HTML レンダリング エンジンは、無効な HTML を正常に見えるようにするために多くのトリックを採用しています。

とにかく、すべてのことはさておき(accept(...)存在すると仮定し、タグ内の他のすべての呼び出しが正しいなど)、あなたが抱えている問題は次のとおりだと思います:

onclick='<%# String.Format("accept('{0}','{1}','{2}','{3}-{4}');", ... )%>'

この行は、おそらく次のように評価されます。

onclick='accept('{0}','{1}','{2}','{3}-{4}');'

すべての一重引用符を使用するとonclick='accept('、有効な JavaScript メソッド呼び出しではないすべての onclick 属性が表示されます。"" 文字列を使用したいと思うでしょう。これは、エスケープすることでフォーマット文字列に埋め込むことができます。

String.Format("accept(\"{0}\",\"{1}\",\"{2}\",\"{3}-{4}\");", ... )

次に、属性内で ' と " の正しい組み合わせを取得できるはずです。

onclick='accept("{0}","{1}","{2}","{3}-{4}");'
于 2013-04-29T23:22:55.457 に答える