- PR -

ASP.NETで文字列をそのまま出力

投稿者投稿内容
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-09-14 17:55
この会議室(Insider.NET 会議室)では多分はじめまして、かと。
がると申します。
普段はUNIX系でお仕事をしております。

ちと現在、ASP.NETで非常に困っていることがありまして。
もしなにかヒントなりアイデアなりでもよいので、お持ちの方が
いればと思ってスレッドを立てました。

質問:一切のエレメントをはさまずに「直接文字列だけを出力できる」
 コントロールはあるか?
Labelコントロールが比較的希望に近かったのですが、Labelはそれでも
SPANエレメントで前後を挟んでしまいます。
ここで、完全に「なにもはさまずに純粋にプレーンで出力できる」
コントロールってのはないものでしょうか?

なにをしたいのか、って部分をちと詳しく記述します。
イメージとしては、例えば以下のようなコーディングが出来ないかなぁ、
と考えております。
なお、プログラムは「イメージが伝われば」って程度で書いてあるので
かなり乱雑っていうか、無理があります(苦笑

コード:
<%@ Page language="c#" %>
<script runat="server">
public void Page_Load(Object s, EventArgs e) {
  // テンプレートファイルの読み込み
  string base_data = file_read("テンプレートファイル名");

  // テンプレートの展開とか置換とか
  convert conv = new convert;
  conv.set_data(なにか動的なデータ1);
  conv.set_data(なにか動的なデータ2);
  conv.set_data(なにか動的なデータ3);

  // 置換
  string data = conv.conv(base_data);

  // 出力可能性1
  page.Text = data;

  // 出力可能性2:これならコントロールはいらない?
  // 多分、System.console 名前空間ではない…んだと思うんですが
  System.Console.WriteLine(data);
}
</script>
<asp:なんか適当なコントロール id="page" runat="server" />



コード:
--テンプレートの中身-------------
<HTML>
<HEAD>
  色々
</HEAD>

<BODY アトリビュート色々>
  コンテンツ色々
</BODY>
</HTML>



なんでこんな事をしたいのかって言うと
・HTMLファイルは「別ファイル」に保存したい
っていう第一義がありまして。動的画面に使う、ベースになる
HTMLファイル(テンプレートファイル)は、完全に切り出して運用
したい、ってのがあります。
で、もう一つある要求が
・テンプレートファイルは既存のデザイナの使うソフトで
 容易に編集ができる
モノであってほしいなぁ、と。
つまり、平たく言えばDreamweaverとか、デザイナのなれた環境で
そのままデザインしてもらいたい、っていうのがあります。
デザインとの分離、だけなら.NETでも提示されているソリューション
だとはおもうのですが、それでもデザインにVisual studioを使用
することがmustになっているため、かなりその部分で引っかかってます。

いやまぁC++とかPerlのCGI、もしくはPHPやJava(JSP)で作るので
あればライブラリがあるのですが。
今回「ど〜してもASP.NETで」という強い要求がありまして。
ASP.NETのWeb、書籍をかなり広範囲で調べたつもりなのですが、上記の
ような要求に対する内容がまったくないので、かなり困っています。

「やったことある」とか「これならできそうなんじゃ?」とか、
ヒントでもよいのでどなたかお持ちの方がいたら是非教えていただきたく。

.NET的には相当に奇妙なことをやっているのだろうとは思うのですが(苦笑
よろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-09-14 18:04
引用:
質問:一切のエレメントをはさまずに「直接文字列だけを出力できる」
 コントロールはあるか?

Literalコントロールはどうでしょうか。結構使い勝手がいいと思っています。
既存のコントロールでどうしようもないときよくお世話になります。
タイトルを動的に変更したりとか・・
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-09-14 18:16
http://ja.gotdotnet.com/quickstart/aspplus/doc/webdatabinding.aspx
ここのDataBind2.aspxのサンプルなどはどうでしょう。
単一値のデータバインディングというものらしいです。

リテラルコントロールもいいですけどね。
猫山みやお
大ベテラン
会議室デビュー日: 2004/09/09
投稿数: 119
投稿日時: 2004-09-14 18:45
.ashxを試してみるのもいいかも
http://homepage3.nifty.com/dotnetfan/web/web22.html
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-09-14 20:47
こんにちは。

引用:

がるがるさんの書き込み (2004-09-14 17:55) より:
コード:

// 出力可能性2:これならコントロールはいらない?
// 多分、System.console 名前空間ではない…んだと思うんですが
System.Console.WriteLine(data);





こちらの方法であれば、HttpResponseクラスのWriteメソッドで対応できそうですな。
this.Response.Write(data);



[ メッセージ編集済み 編集者: nodera 編集日時 2004-09-14 20:49 ]
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-15 09:06
PlaceHolderもごくたまに使う。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-09-15 09:24
引用:

noderaさんの書き込み (2004-09-14 20:47) より:

こちらの方法であれば、HttpResponseクラスのWriteメソッドで対応できそうですな。
this.Response.Write(data);




Response.Writeだと、書き込む場所の制御ができないのでは?
もしくはその他のタグもResponse.Writeで書き込むとかの処理が必要になるかと。]
Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2004-09-15 09:50
Mickyでございます。
いつもお世話になっております。

自分も、Literalが使えるかな?と
思いながら読み進めたのですが、

これだけアイディアが出てくるとは…

「@IT Insider.NETの底力を見た!」

と感じてしまったので、思わず書き込んでしまいました(^^;


スキルアップ/キャリアアップ(JOB@IT)