2009-07-10 20 views
6

私はこのようなページの入力コントロールを持っている:<%=%>タグはなぜ" <%=%> "と表示されますか?

私はページ上の <%=%>タグを使用

<input 
    name="ctl00$ContentPlaceHolder1$EditForm$resetButton" 
    type="button" 
    id="ctl00_ContentPlaceHolder1_EditForm_resetButton" 
    value="Iptal" 
    onclick="return resetForm(&quot;&lt;%=projectValidationSummary.ClientID%>&quot;);" /> 

それがレンダリングされるが、それは

&quot;&lt;%=%>&quot; 

ができるようにレンダリングされる

<input 
    type="button" 
    causesvalidation="false" 
    runat="server" 
    id="resetButton" 
    value="Iptal" 
    onclick='return 
    resetForm("<%=projectValidationSummary.ClientID%>");' /> 

誰が私になぜこれが起こっているのか教えてください。

+0

入力はまたはコントロール? – Kane

+1

質問はあなたがしようとしていることに応じて異なる答えがあるかもしれないと思います。これはJavaScript、JSP、またはASPですか? –

+0

それはasp.netページと dankyy1

答えて

4

<%=%>はリテラルhtml内でのみ使用でき、サーバーコントロール属性では使用できません。

代わりに、あなたは私たちには> <%#1%をデータバインディングなければならない、とあなたのケースでは、私はあなたがあなたのクライアント側のJavaScript関数をトリガしようとしていると思うと、あなたのコードは次のようになります。

<asp:button 
causesvalidation="false" 
runat="server" 
id="resetButton" 
text="Iptal" 
onclientclick='<%# String.Format("return resetForm(\"{0}\");", projectValidationSummary.ClientID) %>' /> 

とサーバー側では、属性をこのコード(おそらくPage.Loadイベント内)にバインドする必要があります。

if(!this.IsPostBack) 
{ 
    this.resetButton.DataBind(); 
} 
+0

私たちの手助けのためにthnx js関数 "resetForm"非パラメータ を作成しました。この場合、javascript関数内にアイテムのclientIdがあります... – dankyy1

1

resetFormの文字列にHTMLエンコードが行われているためです。

0

これは明らかですが、ファイルの種類が適切であることを確認しましたか?私。 JSPの場合はJSP、ASPの場合はasp?

これは、エンコードする前にコンパイラによって捕捉されるはずです。ページをコンパイルする前に前処理が行われている可能性はありますか? IDが変更され、名前要素が追加されました...

3

レンダリングブロックを値のテキストと混在させて一致させることはできません。この

onclick='<%= "return resetForm(\"" + projectValidationSummary.ClientID + "\");" %>' 
3

をお試しくださいrunat="server"を削除する - あなたはそうリテラル書き込み(<%=

をやっている場合は、それを必要としない:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    value="Iptal" 
    onclick="return resetForm('<%= projectValidationSummary.ClientID %>');" /> 

またはその代わりにデータバインドを使用する:

<input 
    type="button" 
    causesvalidation="false" 
    id="resetButton" 
    runat="server" 
    value="Iptal" 
    onclientclick="return resetForm('<%# projectValidationSummary.ClientID %>');" /> 

//in code behind: 
resetButton.DataBind(); 

.Netは、サーバーレンダリングコントロール内のリテラル書き込みが、パネル。

+1

2番目のコード領域ではonlickはサーバーイベントで、 'return resetForm ...'有効な割り当てではありません。 – bang

+0

よく調べました - 私はそれをonclientclickに変更しました – Keith

3

すでにrunat = "server"を使用しているので、このプロパティはコードビハインドで設定する方がよいでしょう。

resetButton.attributes.add( "onclick"、 ".....");

関連する問題