none
aspxソース記述エラー RRS feed

  • 質問

  • こんにちは、

    aspxのソース記述で、下記文ではうまくいくのですが

    <cc1:GeneralTextBox id="RemarksBox" runat="server" ItemName="備考" IOMode="Input" Text='<%# Convert.ToString(Container.DataItem("OrderNo")) %>'

    こちらの文ではうまくいかず悩んでいます。

    <cc1:GeneralTextBox id="RemarksBox" runat="server" ItemName="備考" IOMode="Input" Text='<%# Convert.ToString(Container.DataItem("OrderNo")) %>' / '<%# Convert.ToString(Container.DataItem("AcknowledgmentNo")) %>'

    エラー文面はパーサー エラー メッセージ: サーバー タグが正しく形成されていません。
    と記載されていました。

    /と
    <%# Convert.ToString(Container.DataItem("AcknowledgmentNo")) %>の値を表示したいだけなのですが・・。


    2011年6月7日 2:42

回答

  • 根本の問題として、"でクォートを開始したら"で終わる必要がありますし、'で開始したら'で終わります。

    エラー個所をよく見ると

    <cc1:GeneralTextBox
      id="RemarksBox"
      runat="server"
      ItemName="備考"
      IOMode="Input"
      Text='<%# Convert.ToString(Container.DataItem("OrderNo")) %>'
      / '<%# Convert.ToString(Container.DataItem("AcknowledgmentNo")) %>'

    赤太字で強調した部分がはみ出ています。

    それとは別の問題もあります。

    <%# %>はデータ バインディング式と呼ばれるもので、Textプロパティに文字列を代入しているわけではなく、TextプロパティとConvert.ToString(Container.DataItem("OrderNo"))とを結合(バインディング)しています。バインディング構文の外で文字列結合などはできません。(結合した時点でバインディング構文ではなく文字列になってしまうため扱えない。)

    対策としてはバインディング構文内で文字列結合すればいいです。

    Text='<%# Container.DataItem("OrderNo") + " / " + Container.DataItem("AcknowledgmentNo") %>'

    # と回答しておきながら試していないので間違っているかも。とりあえずConvert.ToString()は不要かと思います。HTMLとしては文字列で表現するしかないので、自動的に変換されるはず。

    • 回答としてマーク 山本春海 2011年6月22日 9:04
    2011年6月7日 3:59
  • > こちらの文ではうまくいかず悩んでいます。

    以下のページが参考になりませんか?

    データバインド式
    http://surferonwww.info/BlogEngine/post/2010/08/17/Data-bind-method.aspx

     

    • 回答としてマーク 山本春海 2011年6月22日 9:04
    2011年6月7日 14:01

すべての返信

  • 根本の問題として、"でクォートを開始したら"で終わる必要がありますし、'で開始したら'で終わります。

    エラー個所をよく見ると

    <cc1:GeneralTextBox
      id="RemarksBox"
      runat="server"
      ItemName="備考"
      IOMode="Input"
      Text='<%# Convert.ToString(Container.DataItem("OrderNo")) %>'
      / '<%# Convert.ToString(Container.DataItem("AcknowledgmentNo")) %>'

    赤太字で強調した部分がはみ出ています。

    それとは別の問題もあります。

    <%# %>はデータ バインディング式と呼ばれるもので、Textプロパティに文字列を代入しているわけではなく、TextプロパティとConvert.ToString(Container.DataItem("OrderNo"))とを結合(バインディング)しています。バインディング構文の外で文字列結合などはできません。(結合した時点でバインディング構文ではなく文字列になってしまうため扱えない。)

    対策としてはバインディング構文内で文字列結合すればいいです。

    Text='<%# Container.DataItem("OrderNo") + " / " + Container.DataItem("AcknowledgmentNo") %>'

    # と回答しておきながら試していないので間違っているかも。とりあえずConvert.ToString()は不要かと思います。HTMLとしては文字列で表現するしかないので、自動的に変換されるはず。

    • 回答としてマーク 山本春海 2011年6月22日 9:04
    2011年6月7日 3:59
  • > こちらの文ではうまくいかず悩んでいます。

    以下のページが参考になりませんか?

    データバインド式
    http://surferonwww.info/BlogEngine/post/2010/08/17/Data-bind-method.aspx

     

    • 回答としてマーク 山本春海 2011年6月22日 9:04
    2011年6月7日 14:01
  • こんにちは、kimura0118 さん。
     
    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    しばらく経ちましたが、その後いかがでしょうか?

    参考になるアドバイスをいただいているかと思われましたので、誠に勝手ながら私のほうで一旦回答としてマークさせていただきました。
    佐祐理 さん、SurferOnWww さん、情報ありがとうございます。

    いただいた返信の中で、解決に役立った情報や、参考になる情報には、回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報がわかりやすくなるかと思いますので、ご協力よろしくお願いいたします。

    もし、まだ解決していない場合には、現在の状況、詳細を投稿して質問を続けてくださいね。
    今後ともMSDNフォーラムをよろしくお願いいたします。それでは。
                                                                
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2011年6月22日 9:05