- PR -

動的にHelloWorldを表示させたい

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-11-24 10:37
msoです。

ASP.NET2.0(C#)で開発を行っています。

現在、技術調査を行っているものがいくつかありますが、
どうしても自分では解決が出来そうにないものがあります。
もし、ご存知のかたがいたら教えてください。


現在やりたいこととしては、DBに入っている以下のような文字を
取得し、表示したいと思っています。

コード:
<% 
Response.Write("Hello from Test.aspx.<br>");
%>



実際にはデザインを行う人が簡単なif文などを記述するそうです。
#そういう要求がきているのですが・・・個人的にあまり良い方法とは
#思えません。

まずは、技術的に可能なのか?それとも不可能なのかを区別したいと
思っていますが、動的にHelloWorldを出力することは可能なのでしょうか?

ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-11-24 10:50
引用:

msoさんの書き込み (2006-11-24 10:37) より:
msoです。

ASP.NET2.0(C#)で開発を行っています。

現在、技術調査を行っているものがいくつかありますが、
どうしても自分では解決が出来そうにないものがあります。
もし、ご存知のかたがいたら教えてください。


現在やりたいこととしては、DBに入っている以下のような文字を
取得し、表示したいと思っています。

コード:
<% 
Response.Write("Hello from Test.aspx.<br>");
%>



実際にはデザインを行う人が簡単なif文などを記述するそうです。
#そういう要求がきているのですが・・・個人的にあまり良い方法とは
#思えません。

まずは、技術的に可能なのか?それとも不可能なのかを区別したいと
思っていますが、動的にHelloWorldを出力することは可能なのでしょうか?




可能。じゃなきゃ動的ページってなんのためにあるの。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-11-24 11:06
HTMLの中の特定の部分をデザイナが簡単に置き換えられるようにしたい、という話なのかな?

で、技術的には可能でしょうけど、考えないといけないことはたくさんありそうですね。
まず、Response.Writeをもし使ったらHTMLが崩れます。これはやってみればすぐわかるはず。
こういったことがあるので、まずはASP.NETの仕組みのなかでどこまでだったらできるのかを
きちんと整理する必要があるでしょう。

一般的な答えがあることではないと思うので、要件にあわせてテストして確認しながら
すすめるしかないのでは?
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-11-24 13:13
msoです。

回答ありがとうございます。

動的に行うことが可能ということだったのですが、
自分で作成したサンプルではどうやっても出力する事が
できませんでした。


簡単ではありますが、以下は自分が作成したサンプルです。
c:\\sample4\\test.xmlにはColumn1、Column2があり、
Column2には
コード:

<%
Response.Write("Hello from Test.aspx.<br>");
%>


が入っているとします。

現状、テストをやってみた範囲では動的に出力をすることが
出来ませんが、どのようにしたら良いでしょうか?






Default.aspx
コード:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate><tr><td><%# Eval("Column1") %></td><td><%# Eval("Column2") %></td></tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>





Default.aspx.cs
コード:

protected void Page_Load(object sender, EventArgs e)
{

DataSet1 ds2 = new DataSet1();
ds2.ReadXml("c:\\sample4\\test.xml");
this.Repeater1.DataSource = ds2.DataTable1;
this.Repeater1.DataBind();


}





[ メッセージ編集済み 編集者: mso 編集日時 2006-11-24 13:13 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-11-24 13:59
test.xmlはただしくDataSetに読み込める形式のXMLファイルになっているのでしょうか?
読み込めているとして、読み込んだデータ内で<%といったタグは問題なく扱えているでしょうか。
で、ここまで問題なかったとして。。。

そか、DataBindingってレンダリングの直前に行われるので、ここからサーバスクリプトを
コンパイルさせることは無理ですね。
データとしてHTMLを持っているならそれを表示させることはできそうですけど。

#ということで、ASP.NETの仕組みを十分理解することが必要、と。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-11-24 14:28
msoです。

引用:

どっとねっとふぁんさんの書き込み (2006-11-24 13:59) より:
test.xmlはただしくDataSetに読み込める形式のXMLファイルになっているのでしょうか?
読み込めているとして、読み込んだデータ内で<%といったタグは問題なく扱えているでしょうか。
で、ここまで問題なかったとして。。。



ここまでは問題なく処理をすることが出来ています。

引用:

そか、DataBindingってレンダリングの直前に行われるので、ここからサーバスクリプトを
コンパイルさせることは無理ですね。
データとしてHTMLを持っているならそれを表示させることはできそうですけど。

#ということで、ASP.NETの仕組みを十分理解することが必要、と。



んー、やっぱしそうなりますよね。
処理のタイミングが問題になって、うまくいかない気がしていました。



#いまさらながらタイトルのつけ方に問題があった気がします。
#次からはタイトルのつけ方にもう少し頭をひねるようにします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-11-25 14:05
そんなに頻繁に変更されるデータでないなら、ASP.NETの中で動的にやるよりも、
DBの値で変えたいところをユーザコントロールに切り出しておいて、
そのascxのソースを自動生成して仮想ディレクトリの下に上書きコピーする
バッチプログラムを作る方が実現可能性は高そうですね。
#そのバッチをキックする仕組みさえなんとかなれば
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-11-27 15:38
msoです。

引用:

ぼのぼのさんの書き込み (2006-11-25 14:05) より:
そんなに頻繁に変更されるデータでないなら、ASP.NETの中で動的にやるよりも、
DBの値で変えたいところをユーザコントロールに切り出しておいて、
そのascxのソースを自動生成して仮想ディレクトリの下に上書きコピーする
バッチプログラムを作る方が実現可能性は高そうですね。
#そのバッチをキックする仕組みさえなんとかなれば



ascxなるものが良くわかりませんが、一度自分でサンプルを作成してみます。
情報ありがとうございます。
1

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