【質問】ASP.NETスレ ..
[2ch|▼Menu]
394:nobodyさん
09/05/28 19:21:36 wAV+Bwsc
>>393
ありがとうございます。

なるほど!テストしてみます!

395:nobodyさん
09/05/28 19:27:17
>wwwroot直下にmovileというアプリケーションを登録し、元のサイトのコードをすべてコピーしました。
>データベースからのデータを得る部分はwwwroot直下の別アプリケーションwevserviceを参照しています。
ああ、別アプリに登録してるのか。
それだと、webserviceが共通で利用できない可能性ってないのかな?

俺が勘違いしてるね。スマン


396:nobodyさん
09/05/29 02:19:51 DlIDf9OB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Debug.WriteLine(Session.SessionID)

End Sub


↑のように書いてページにボタンを置いてポストバックしてみると、毎回違う値が出力される。
SessionIDってそういうものなの?
セッションIDなんて名前なんだから同一セッションの場合は同一の値が返ってくるものと思ってた。

397:nobodyさん
09/05/29 03:05:08
>>396
同じだよ
クッキーが無効になってる
とか
URLリンク(support.microsoft.com)
とか

398:nobodyさん
09/05/29 08:10:07
Calenderを使って日付けを入力することは簡単にできるのですが、例えば
TextBoxに「2001/6/1」と入力して、それをカレンダーに反映させるにはどうすればよいのでしょうか?

今月じゃない日付を選ぶ場合、月をクリックして前月、前月と繰り返し再表示させなくてはならず、
年月日をダイレクトで指定し、そのカレンダー上に日付に関連する情報を表示(日付を赤バックにする)し
内容を確認できるようにしたい。
最終的に日付の入力はDropDownListで入力する予定です。

399:nobodyさん
09/05/29 11:09:25 I+rUeGmY
>>395
いえいえ、とんでもありません。
>webserviceが共通で利用できない可能性
やはりことあたりが疑わしいので、webサービスに接続しているアカウントなどを
追ってみたいと思います。

400:nobodyさん
09/05/29 14:01:33
>>398
DateTime dateTime;
if (DateTime.TryParse(this.TextBox1.Text, out dateTime))
 this.Calendar1.VisibleDate = dateTime;



401:nobodyさん
09/05/29 23:31:08
>>163
もう解決済みかもしれんが、亀レスしておく。ASP.NET のワーカー
プロセスは以下のタイミングで再起動する。
・Web.config や Machine.config の更新
・bin 以下のコンテンツの変更(アセンブリ)
・*.aspx 等のコンテンツの変更多数
・なんか具合が悪い時(ぴゅう!)
よって、InProc モードを使っているとタイムアウトしていないのに
データが失われるという不可解な現象に悩まされることになる。
これがデフォルトの動作モードというのはもはや犯罪。いくら速くても
データがロストするんじゃね。

ということで、Session に重要なデータ保存するなら、InProc を使っては
いけない。つまり、ASP.NET 2.0 以降を使うべき。ただ StateServer などを
使う場合には Session に格納するオブジェクトに Serializable 属性が必要
になるので要注意。

402:nobodyさん
09/05/30 00:27:53
>>401レスどうもです。

原因は、>>241でして、
どうしようもない状態です。
iis 8007006dでググルと事例は
やたら出るが、対処方がみつからないです。

InProcを利用すべきでない等も
理解しているのですが
変えられない状況です。


403:nobodyさん
09/05/30 00:32:22
InProcでないといけない理由って?


404:nobodyさん
09/05/30 00:37:39
複数部署のアプリが混在している
1つのプロジェクト構造の為、
自部署のアプリのみをソースレベルで
慎重に分離して、StateServer対応の為、
シリアライズの部分を慎重に見直して、
全再テストする工数が莫大だからです。



405:nobodyさん
09/05/30 00:47:53
セッションを他の部署でも使ってるっから自分のとこだけでは変更できないてこと?
あれから18日も経ってるけど解決できてないんだね。ご苦労様です。

サーバの再インストールとかやってみた?
どっちにしても、そのままだとシステムとして成り立たないから、
何が原因か、サーバなのか、プログラムなのか、
結果的に全部署で再テストする必要が出てきそうだね。カワイソス

URLリンク(www.google.co.jp)
World+Wide+Web+%E7%99%BA%E8%A1%8C%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A7%E8%87%B4%E5%91%BD%E7%9A%84%E3%81%AA%E9%80%9A%E4%BF%A1%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82+&btnG=
Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=

406:nobodyさん
09/05/30 01:25:38
>>402
iis 8007006d でぐぐると、日本語では1件しか表示されない
MSのサポート情報の機械翻訳で日本語があれだが、エラーの原因が書いてある
そこに書いてある対処方法は当然ためしたか、該当しないか確認したんだよな?


407:398
09/05/30 04:44:22
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Calendar1.SelectionChanged
 'カレンダーの日付を選択すると、「選択した日付」を表示(確認)
 lblSelectedDay.Text = Calendar1.SelectedDate.ToShortDateString
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 'ページロード初回のとき、「今日の日付」を表示
 If Not IsPostBack Then
  lblToday.Text = DateTime.Now.Date.ToShortDateString
 End If
End Sub

Protected Sub btnChandeDay_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles btnChandeDay.Click
 '「日付変更」ボタンをクリックしたとき、「今日の日付」を表示
 Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text)
 lblChangedDay.Text = txtInputDay.Text                   '入力した日付をラベル表示(確認)
 lblChangedDay2.Text = Calendar1.SelectedDate.ToShortDateString '選択した日付をラベル表示
End Sub

という感じで作ってみました。
extBoxに「2001/6/1」と入力して、それをカレンダーに反映させる、については
>Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text)
によって該当月のカレンダーが表示されますが、日付の選択状態が実行されません。
指定した日付を選択状態にするにはどうすればよいのでしょうか?

408:nobodyさん
09/05/30 05:15:58
>>407
>指定した日付を選択状態にするにはどうすればよいのでしょうか?
普通にCalendar1.SelectedDateにセットすればいいだけの気がするんだが、
これって読み取り専用か?

409:nobodyさん
09/05/30 06:09:32
そんだけ動いてるってことはサーバの負荷が大きくなってプロセス再起動してる感じかなぁ…
ロードバランサ使って負荷分散するとかしないと厳しそうな気もするけど・・・
監視ソフトでも入れて負荷みないとなんともいえん

410:nobodyさん
09/05/30 06:17:21
Calendar1.VisibleDate = Convert.ToDateTime(txtInputDay.Text)
Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text) ←追加
lblChangedDay.Text = txtInputDay.Text
lblChangedDay2.Text = Calendar1.SelectedDate.ToShortDateString

>Calendar1.SelectedDate = Convert.ToDateTime(txtInputDay.Text)
を追加したら上手くいきました。ありがとう!

411:nobodyさん
09/05/30 07:12:47
>これがデフォルトの動作モードというのはもはや犯罪。いくら速くても
>データがロストするんじゃね。

むしろデータがロストしても致命的にならないくらい
セッションをできるだけ使わないのがおすすめだけどな。
おれはセッションにはせいぜいリダイレクトの瞬間のやりとりデータしか入れないぜ。


412:nobodyさん
09/05/30 11:10:13
データの受け渡しをするにしても、必ずSerializableなクラスを渡すようにするのがいいね
設計段階で、Selializableな基底クラスを用意して、それを継承したクラスのメンバ変数で
値を持つようにして、それをsessionで受け渡しすればいい。
InProcで問題が発生してStateServerの利用になっても問題無く移行できる。

413:nobodyさん
09/05/30 11:48:58
Serializable属性は継承されません

414:nobodyさん
09/05/30 11:53:13
ん、そうなの?
継承クラスでそのままSerializableできたけどなんでだろう?

415:nobodyさん
09/05/30 12:56:14
>>413
Silializerだと駄目だね
SessionとかだとSerializable属性なしでも通るのか。
知らなかった。サンクス!


416:410
09/05/30 14:29:16
MasterPage上の表の左コラムに、>>407,410で作ったカレンダーを貼り、
日付を選択したら、表の右コラムのContentPlaceHolder1に関連情報(Result.aspx)を表示する。

というのを作成しました。
Server.Transfer("Result.aspx?targetDay=" + Calendar1.SelectedDate.Date)
これで対象となる日付を引き渡し、該当する関連情報を表示するところまでできたのですが

なぜかカレンダー表示がその都度初期値(今日の日付を含む月)に書き換えられてしまいます。
選択した日付を含む年月のカレンダーを表示し、且つ選択した日を選択表示にするには
どうすればよいですか?

417:nobodyさん
09/05/30 14:45:21 yVbH19hK
もう、やりたいこと全部コメントに書いてプロジェクトごとアップロードしたら?
俺は落とさないけど。

418:nobodyさん
09/05/30 15:27:24
よくわからんけどVBって日付の妥当性チェック無しでConvertしても許されたり
stringにDateTime突っ込んだりしても推測して型変換してくれるの?

419:nobodyさん
09/05/30 15:37:08
普通にブラウザの戻るボタンで戻ると、ちゃんと日付が反映されてるよ
戻るボタンでもAJAX使ってると今日の日付にもどっちゃうけど

ただ単に同じページに戻っただけなら、初めてページを表示させるのと同じだから
表示の日付も今日の日付になってるというのは当たり前の話。
日付を選択して違うページに移動し、再び日付選択ページに戻った時、
その日付を維持したいのなら、セッションかクッキーを使用するか、
GETかPOSTで日付データを渡して値を設定するしかない。

420:410
09/05/30 16:12:33
MasterPage

 表左コラム   | 右コラム
          | 
 カレンダー   | 該当年月日に属する情報
 Calendar.ascx | Result.aspx

こんな感じで、カレンダーで選んだ日付に属する情報を表の右コラムに表示する。

Server.Transferを使うことで、選択した年月日の情報を表示することはできました。
ところがResult.aspxが表示された瞬間、Calendar.ascxのカレンダーが初期年月に戻ってしまう。

カレンダー上に、右コラムで表示された情報の日付が選択された該当月が表示されたままにしておいて
同月の前後その他の情報を続けて表示確認したい。

マスターページに共通の見た目のデザインを設定し、この上で
Webユーザーコントロールから必要な項目を選択し、Webフォームに見たい情報をデータベース検索し表示する。
みたいなことができるような仕組みを作ろうかと思っています。

421:nobodyさん
09/05/30 16:47:09
マスターページとかめんどくさそうだなw

422:nobodyさん
09/05/30 17:07:38 yVbH19hK
>>420
ちょっと危険なコーディングだがMasterPage側での処理ということで。
URLリンク(teke348.dyndns.tv)

カレンダーなんて、そのうち「ある場合ではこうで、そうでない場合はこう」
とか色々制限がつきやすいものだから、それ自体をユーザーコントロールにした方が吉。

423:nobodyさん
09/05/30 20:25:01
>>422
優しいね
ソース眺めて(・∀・)ニヤニヤしようかな(・∀・)ニヤニヤ

424:nobodyさん
09/05/30 20:35:56
(・∀・)ニヤニヤしようと思ったらVBだからよくわからんかったわw

425:nobodyさん
09/05/31 03:44:11
フォーム認証のメリットって何?ベーシック認証じゃ駄目なん?
認証受けずにページを表示しようとしたら指定のページに強制的に飛ばされる、つーのは
便利だと思うけど。

426:nobodyさん
09/05/31 04:17:10
認証方法はユーザIDとパスワードの組み合わせだけだと思うか?

427:nobodyさん
09/05/31 14:48:59
ベーシック認証に他のやり方があるかどうかわからないけど、
Windowsのアカウントユーザを追加してIDとパスを設定しなくちゃいけないから面倒だからじゃない?
apacheとかでも動的に.htaccessとかにユーザを追加管理しなきゃいけなから
面倒だったと記憶してるんだけど。
フォーム認証ならデータベース等を利用して動的にユーザの追加や削除ができるでしょ。



428:nobodyさん
09/05/31 17:35:56
まあ、ASP.NET側で自分で独自に処理してやれば、BASIC認証でも自由にやれる。
けどわざわざやる価値はあんまりないわな。


429:410
09/06/01 17:45:43
>>422
どうもありがとうございます。
MasterPageに複数のWebコントロールを載せて、結果をDefoult.aspxに表示するというコンテンツを作ると、
Sessionを使うと煩雑になるのと、時系列的にPageを切り替えていくのならOKですが、それぞれの
Webコントロール(上のデータ表示)に、同時に反映させるのが難しいかと思いました。

結局、MasterPage画面に配したWebコントロールページに同時にServer.Transferを送ることで
画面上のデータをすべて同期させることができることが解りました。
VIEWSTATEが少し冗長となりましたが。

またアドバイスお願いします。

430:nobodyさん
09/06/02 22:10:04
>>418
int型へのキャストで以下が成立する言語
CInt("+2,7,42,4,6,") = 274246
#全角は入力間違いをしている訳ではない

431:nobodyさん
09/06/02 23:17:26

まぢかw

432:nobodyさん
09/06/04 17:26:18
参考書で練習問題やってたらAdventureWorksってのが出てきたんだけど
自分で設定汁って書いてあるんだけど、なにこれ?

433:nobodyさん
09/06/04 18:33:57
マイクロソフトが配布してるデータベースのサンプル

434:nobodyさん
09/06/10 14:01:06
質問です。1つのイベントを複数のイベントハンドラに対応付ける事は出来るでしょうか?

ネットで探していると
「1つのイベントハンドラを複数のイベントに対応付ける」
というのは沢山出てくるのですが、逆は見つけれません。
そもそも無茶な事しようとしているのでしょうか?

具体的にはボタンがクリックされた時にイベントを2つ呼び出したいといった感じです。

435:nobodyさん
09/06/10 17:51:41
イベントハンドラ内から新しいイベント投げてやればいいんじゃね

436:nobodyさん
09/06/10 18:17:32
>>434
こういうこと?

protected void Page_Load(object sender, EventArgs e)
{
 this.Button1.Click += this.Button2_Click;
 this.Button1.Click += this.Button3_Click;
}

protected void Button2_Click(object sender, EventArgs e)
{
}
protected void Button3_Click(object sender, EventArgs e)
{
}


437:nobodyさん
09/06/10 18:42:20
ヒント:オブザーバー

438:nobodyさん
09/06/10 18:52:20
デザインパターン使って自分で定義せんでも、.Clickに+=すればいいやんw

439:nobodyさん
09/06/10 20:41:28
>>435, >>436,
やっぱそうなりますよね。
javascriptだと、onclick="hoge();piyo();" みたいな書き方が出来た気がするので、
そういう単純な方法無いかな〜と思ったんです^^;

>>437, >>438,
そいうデザパタがあるんですね〜勉強してみたいと思います。

440:1/2
09/06/10 21:06:01
質問です
コードビハインドで組んでいるのですが、コンテナの使い方がいまいちわかりません
csファイル1
public class Jouhou{
 private int suuji;
 private string moji;
 public Jouhou(int suuji,string moji){
  this.〜〜
 }
 public setget〜〜〜  
}

CSファイル2
public class Dousa{
protected System〜〜.Repeater rpt;
 private void Page_Load(〜〜){
  List<Jouhou> joho=new List<Jouhou>();
  joho.add(〜〜); x3とか
  this.rpt.DataSource=joho;
  this.rpt.DataBind();
 }
 
 protected string hoge(string moji){
  return moji;
 }
}

ascxファイル
<asp:Repeater〜ID="rpt"〜〜〜>
 <ItemTemplate>
  <%# DataBinder.Eval(Container.DataItem, "moji") %>←正常にLiteralが作成されて、表示される
  <asp:Literal ID〜〜〜〜 Text="hoge(DataBinder.Eval(Container.DataItem, "moji"))">←エラーが出る(エラーは不明)

441:2/2
09/06/10 21:09:12
つまりRepeaterにはきちんとデータはバインドされていて、mojiとかが正常に以降しているのに、
メソッドに値を送り込もうとすると失敗します。
例えば、
<asp:Literal ID〜〜〜〜 Text="hoge("aaaa")">
とすればきちんとaaaaが返ってきます

やりたいことは、repeaterの中のデータを一旦検証メソッドに送って、その結果を返したいです。
どなたかアドバイス頂けないでしょうか?


442:nobodyさん
09/06/10 23:18:50
>>441
なんかこんなんつくってたわ
昔作ったから意味は忘れた

<asp:TextBox ID="TextBox" Text='<%# this.GetColumnData(Container, "Data") %>' runat="server"></asp:TextBox>

protected string GetColumnData(RepeaterItem repeaterItem, string columnName)
{
 object columnData = DataBinder.Eval(repeaterItem.DataItem, columnName);
 string returnData = "";
 if (columnData is string)
  returnData = (string)columnData;
 else if (columnData is int)
  returnData = ((int)columnData).ToString();
 else if (columnData is decimal)
  returnData = ((decimal)columnData).ToString();
 else if (columnData is DateTime)
  returnData = ((DateTime)columnData).ToString("yyyy/MM/dd");

 return returnData;
}

443:nobodyさん
09/06/10 23:23:30
>>442
ありがとうございます!
さっそくそれを参考にいろいろ調べてみます

444:nobodyさん
09/06/12 09:14:01
すみません。初心者なのですが
皆さんのお知恵をお貸し下さい。

現在、ASP.NETでWEBアプリの勉強をしているのですが
SQLサーバーに、バイナリー形式で保存してある
画像を加工してから出力したくて
BITMAPクラスを使用すればいいことまでは分かったのですが
データベースから取り出した、バイナリーデータを
どうやってBITMAPクラスに入れればいいのか、分からず四苦八苦しています・・・
分かる方からすれば、くだらないかも知れませんが、教えてください。><

Dim image As Bitmap

Dim writeStream As Byte() = New Byte(record.Item(0).toByteArray.Length - 1) {}
System.Buffer.BlockCopy(record.Item(0).toByteArray(), 0, writeStream, 0, record.Item(0).toByteArray.Length)

image = New Bitmap(writeStream)

これだとエラーになっちゃうんです><


445:nobodyさん
09/06/12 17:26:51
>>444
//MSSQLからバイナリデータの取得 varbinary(MAX)
TestDataSetTableAdapters.TestTableTableAdapter tableAdapter =
 new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter();
TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable();
tableAdapter.Fill(dataTable);

//MemoryStresmにMSSQLから取得したbyte[]データを格納 行が無かった場合のチェックする必要あり
MemoryStream ms = new MemoryStream(dataTable[0].BitmapData);
//Bitmapのインスタンスを生成
Bitmap bitmap = new Bitmap(ms);

//BitmapのインスタンスをImageプロパティに設定
this.pictureBox1.Image = bitmap;


446:nobodyさん
09/06/12 17:29:16
格納する側

//Bitmapインスタンスの生成とbitmapデータの取得
Bitmap bitmap = new Bitmap("test.bmp");
//BitmapデータをMemoryStreamに読み込む
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

//Bitmapデータを格納するTableのインスタンスの生成
TestDataSetTableAdapters.TestTableTableAdapter tableAdapter =
 new TestWindowsForms2008.TestDataSetTableAdapters.TestTableTableAdapter();
TestDataSet.TestTableDataTable dataTable = new TestDataSet.TestTableDataTable();
tableAdapter.Fill(dataTable);

//新しい行の作成と、バイナリデータの設定
TestDataSet.TestTableRow row = dataTable.NewTestTableRow();
row.BitmapData = ms.ToArray();
dataTable.Rows.Add(row);

//Tableの更新
tableAdapter.Update(dataTable);

447:nobodyさん
09/06/12 18:11:28
>> 445
ありがとうございます。
無事解決できました。
本当にありがとうございました

448:nobodyさん
09/06/14 03:05:11
ASPのころ、本当にVBSでできることぐらいしかできなくて苦労したけど
ASP.NETになってから、画像も加工できるし、メールも送れるし、FTPも簡単だし、
FileSystemObjectも簡単になってるし、日付計算も簡単になってるしで、
本当に便利になったよね

BASP21すげーーーーーーとかいって使ってたのを思い出したよ

449:nobodyさん
09/06/15 15:22:19
レイアウトの自由度のためだけに、一意なレコードしか選択されなくても
Repeater使ってるんだけどおかしい?
FormViewはHTMLに展開されるときにデフォルトでtableタグが生成されるのが
いただけない。ちなみに.net framework2.0限定。

あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
<HeaderTemplate>だけだとItemTemplateが無い場合、表示されないし・・

450:nobodyさん
09/06/15 15:36:10
>>449
そこまで文句言うならデザイナにでもパネル突っ込んでガリガリループでHTMLとかコントロール突っ込んでいけば?

451:nobodyさん
09/06/15 19:19:29
>>449
Item5個だけのクラスを新たに作って、リピーターに突っ込めばいいだけなんじゃないの?

452:nobodyさん
09/06/15 21:15:04
そんなの自由自在
ASP.NET サーバコントロールプロジェクトで自作でhtmlを生成して表示してもいいし、
ユーザコントロールにLiteralコントロールを設置して自分でhtml出力すればいい

>あとデザイナ画面でRepeaterコントロールがデフォで5行表示されるのもなんとか変更したい。
何行表示されても構わないように設計(デザイン)する必要があるわけだから、
極端に言えば何行の表示でも別にいいでしょ
<ItemTemplate>がなければ複数行の動的な生成が難しいんだから一般的には必要ないかと

453:nobodyさん
09/06/15 21:32:48 Ovw0FDNW
Visual Web Developer 2005 Express Edition質問です。
PlaceHolderの中にコントロールをドラッグ&ドロップしたいんですけど、
プレースホルダーを配置して、この上にドラッグドロップしてみたんだけど無理でした。
どうやるの?

454:nobodyさん
09/06/16 02:03:02
たぶんやりたいこととか目的とズレてるような気がするけど、
単にPlaveHolder内にタグを配置したいならデザインビューに切り替えて

<asp:PlaceHolder ID="PlaceHolder2" runat="server">

</asp:PlaceHolder>

の※の部分にコントロールをポトペタすればコントロールが配置できる
でも本来、PlaceHolderは実行時にコントロールを生成するコンテナとしての役割が大きいので、
単に配置するだけとか、配置して一斉に非表示にしたいとか目的なら
Panelとか使ったほうがいいと思う。

455:nobodyさん
09/06/16 20:27:08
>>454
ありがとうございます!!!!!多謝です!

デザインビュー上ではやっぱりできないのですね
自分のはFreeのツールだから禁止させられているのかと思いました。

やりたいことは、タブみたいに、ボタンをおしたら、違う画面になる(でも同じWebフォームで処理したい)
みたいな事です。
なので、パネルでやります。

m(_ _)m

456:nobodyさん
09/06/16 21:10:44
>>455
ある特定の一部分だけ非表示にしたり、表示したりするならPanelでもいいけど、
ごっそり変えるなら、MultiViewとViewを使ったほうがわかりやすい

一つのaspxで、入力フォーム→入力確認ページ→実際に登録みたいなこともできるよ
PostBackが仕様のASP.NETだと、そういうのに2枚のaspxが必要だと思ってる人もいるみたいだけど

457:nobodyさん
09/06/16 21:45:59
>>456
たびたびありがとうございます!!!!!
さっそくMultiViewにします!

458:nobodyさん
09/06/21 11:03:39
本番機と開発機でweb.configが違うんだけど、上手い管理の仕方無いかな。
いつか間違えてしまいそうで怖いんだが。

459:nobodyさん
09/06/21 15:17:48
>同じ名前 (Web.config) の複数の構成ファイルを、ASP.NET の
>Web アプリケーション サーバーの複数のディレクトリに置くことができます。
>各 Web.config ファイル内の構成設定 (IIS 認証の設定など) は、
>それぞれのディレクトリ内のソース ファイルに適用されます。

>Web プロジェクトでは、既定の Web.config ファイルの設定に優先する、
>カスタムの構成ファイル (mysettings.config など) を作成できます。
>チーム開発環境では、カスタムのファイルを作成することが必要になる場合があります。
>カスタム構成ファイルの作成が必要となる状況、
>特に共有プロジェクト開発時の必要性の詳細については、
>「Web 参照、Web プロジェクト、およびソース管理の統合」を参照してください。
>Web プロジェクトの場合、ソース管理に追加する必要がある *.config ファイルは、Web.config だけです。

URLリンク(msdn.microsoft.com)

とか?

460:nobodyさん
09/06/21 15:19:15
あとは、やったことないけど、
FTPとかでの更新ならweb.configだけ異なる権限にしておいて、
勝手に書き換えられないようにしておくとか、そんなんはできないのかな

461:nobodyさん
09/06/21 15:35:33
>>458
ウチの場合は、web.config.dev とか、web.config.release 等の名前で
複数の web.config を用意している。自動デプロイスクリプトを組んでる
ので、その中でデプロイ先の環境を判別して web.config にコピってる。
まあ、普通だな。手作業はとにかく排除するのが基本じゃね。

462:458
09/06/21 23:22:51
レスありがとう。
>>460
これはちょっと楽そうだ
読み取り専用属性つけて試してみる。

>>461
だね。ちょっと手を抜いて手作業でしてたけど、後々を考えると
しっかりやった方がいいよね。
XCOPYでゴソってやって、最後にweb.configだけ上書きって
流れだけか。
思考停止してたけど、なんも考える事無かったな。

ありがとう。

463:nobodyさん
09/06/24 19:17:16
俺は毎回コピーした後にweb.config手作業で書き換えてる
たまに書き換え忘れることもあるがw

web.configに設定する内容を、本番と開発で、全く同じにするか、
間違えると動かない設定にしてるので、書き換えないと本番が動かないようにしてる
一番困るのは、書き換え忘れで本番が変な設定で動くことだからな

464:nobodyさん
09/06/24 21:51:34
開発環境と本番環境でweb.configが違うってのは、どういう場合とか?
そういうときはディレクトリ分けして、ディレクトリごとにweb.configを統一しといたほうがいいと思うんだけど

465:nobodyさん
09/06/24 22:53:08
>>464
appSettings とか connectionStrings は結構違うでしょ。あとは認証、
ログ設定、例外発生時の挙動なんかも変えたくなると思うけど。

466:nobodyさん
09/06/24 23:04:24
>>464は何か意図を勘違いしてると思うのだよ


467:nobodyさん
09/06/24 23:58:39
>>465
それってディレクトリごとにかえられになかったっけ?

468:nobodyさん
09/06/25 01:32:47
ディレクトリ毎にweb.configは設定できるはず(やったことない)だけど、
問題はその中身を書き換えなきゃいけない、ってことだと思うんだが。
>>465が書いてる通りのものは結構書き換えなきゃいけない
と思うんだけど。

469:nobodyさん
09/06/25 17:13:04
UpdatePanel の中にラベルとボタンがあります。

ボタンが押されたら、とある PDFファイル をクライアントに attachment として投げつけて
ラベルの文字を「投げたお」と書き換えたいです。(UpdatePanelの更新)

ですが、UpdatePanel の中では PDF をクライアントに投げつける、ということが出来ないみたいです。
何か良い策はないでしょうか。

インテルのWebサイトとかでは、ファイルの投げ付け&画面遷移を同時にやってるやつがありますが
どんな仕組みなんでしょう・・・(そこにヒントがある気がしてます)

470:nobodyさん
09/06/25 17:55:06
ボタンクリックで新規ブラウザを立ち上げてPDFをダウンロードさせ、
UpdatePanelで表示してあげればいいんでね?


471:nobodyさん
09/06/25 18:00:53
>>468
これとか?

URLリンク(social.msdn.microsoft.com)

472:nobodyさん
09/06/25 21:32:10
>>471
し、しらんかった・・・
これは便利そうだ。設定変えたいとこだけ全部外だし
出来そうだなー。
結論としては「ディレクトリ毎」っていうのが、実は
「configファイルを分割」っていう意味だったってこと?
だから「web.config書き換えるっていつだよ?」みたいな
話になってたって事?

まぁどっちでもいいが、良いこと知った。トンクス。

473:nobodyさん
09/06/26 00:25:17
configSourceはweb.configと同じく更新が即反映されるので
大抵のもんはappSettingに突っ込んで分離してる

474:nobodyさん
09/06/26 05:38:12
そして今度は外だししたファイルを上書きするわけですね


475:nobodyさん
09/06/26 11:36:26
>>474
これは?

location 要素は、ASP.NET 構成 API を使用することによりプログラムから設定できます。また、ASP.NET MMC スナップインの [場所] タブを使用して設定することもできます。
URLリンク(msdn.microsoft.com)

476:nobodyさん
09/06/26 17:43:41
>>465
それはweb.configの指定を特定のパスに限る設定だろ

今問題になってるのは
環境を設定するファイルがあって、本番のそのファイルを開発環境のファイルで上書きすること

で、>>471の方法では、結局上書きする(=書き換える必要がでる)ファイルが
web.configからconnection.config(とか任意のファイル)に変わるだけで
結局上書きしないようにするとか手作業で書き換えるとかする必要がでるんじゃないか、ってのが>>474の主張

web.configから任意のファイルになるだけ判りにくくて混乱の元になる気がするぜ


477:nobodyさん
09/06/26 19:00:22
>>476
location要素をプログラムから設定できるんなら
環境(サーバ名とか)によって任意のファイルを指定できるんでないのかなと思って。

478:nobodyさん
09/06/29 19:17:18
お世話になります、自分で独自に作ったクラスをwebサービスの戻り値にするにはどのようにしたらよろしいでしょうか?
イメージとしては

class 個人情報(){
 private string 氏名;
 private int 年齢;
 setget〜〜〜
}
//個人情報クラスのリストを戻す
[webmethod]
class 個人情報[] 個人情報リスト(){
 List<個人情報> aaa=new List<個人情報>();
 aaa.add(new 個人情報(名無し,10));
 aaa.add〜〜〜;
 return aaa;
}

このような感じで作ってもエラーが出てうまく行きません、独自クラスではなくintやstringといったものなら正常に返せます
よろしくお願いします。 

479:nobodyさん
09/06/29 19:43:32 uOZzkvvT
以下について教えて下さい。
[やりたい事]
1)登録ボタン押下
2)DB検索
3)フォームの入力データとDB結果をチェック
4)重複データでない場合=「新規登録しますか?」ダイアログ表示
>OK=DB追加
>キャンセル=中止

重複データの場合=「重複してますが登録しますか?」ダイアログ表示
 >OK=DB追加
 >キャンセル=中止

このような処理を実施させるには、どのような制御を実装すれば良いのでしょうか?

[聞きたい事]
・表示するメッセージを上記のように変動させて確認ダイアログを表示したい
・OK/キャンセルの戻り値を取りたい

登録ボタンのOnClientClickに「return confirm("登録しますか?");」を設定すれば
動作すると思ったのですが、上記1)の後に「登録しますか」ダイアログが出てしまい想定する動作になりませんでした。

不躾で申し訳ありませんが、ご教授の程よろしくお願い致します。

[環境]
Microsoft Visual Studio 2008 Version 9.0.30729.1 SP
Microsoft .NET Framework Version 3.5 SP1
Microsoft Visual Web Developer 2008
VBScript

480:nobodyさん
09/06/29 20:51:34 JEwwWVNF
すでにあるxlsファイルを更新したいんですが、どうすればいいのでしょうか?
A*1に1を入れて保存とかそんな感じでお願いします

481:nobodyさん
09/06/29 22:31:40
>>480
すでにあるがサーバ上にあるのか、クライアント側にあるのかわからないけど、
サーバ側なら
URLリンク(www.atmarkit.co.jp)
で操作できるんでないかね。
Microsoft Excel 11.0 Object Libraryって奴で。

クライアント上にあるのならサーバにアップロードするなりしないといけないと思う

482:nobodyさん
09/06/29 23:18:11
>>479
JavaScriptでやりたいということだと、かなり特殊なことをしなくちゃいけないので面倒臭い。
なので、可能なら同じページに戻して、新規登録だけど登録していい?とか、重複してるけど登録していい?
というメッセージを表示させて確認を求めるほうが楽。

AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
非AJAXでやるとしたらこんな感じかな。
他に簡単な方法のアイデアがあったら求む・・・

<form id="form1" runat="server">
 <asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
 <asp:HiddenField ID="HiddenField2" runat="server" Value="0" />
 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
 <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
</form>



483:nobodyさん
09/06/29 23:18:11
>>479
OnClientClickだとポストバック前に実行しちゃうよ

URLリンク(proshile.blog.drecom.jp)
でいけるけど、今ってもっと良い方法がないのかな?
普段1.1使っててわからん。




484:nobodyさん
09/06/29 23:19:02
>>479
つづき

protected void Button2_Click(object sender, EventArgs e)
{
 //ユーザによるボタンのクリック DB内を調査して表示する→2回目のボタンを押す
 if (this.HiddenField1.Value == "0")
 {
  //Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
  this.HiddenField1.Value = "1";
  //データベース内のデータを確認する作業をここでする
  //もしyesが押されたらHiddenField2にtrueを、noならfalseを格納する
  ScriptManager.RegisterStartupScript(this, typeof(Page), "test", "if (confirm('')) { form1.HiddenField2.value = 'true'; } else {form1.HiddenField2.value = 'false';};form1.Button2.click();", true);
 }
 //JavaScriptによる2回目のクリック confirmの結果により動作を分ける
 else if (this.HiddenField1.Value == "1")
 {
  //もしyesを押された時の処理
  if (this.HiddenField2.Value == "true")
  {
   //confirmでyesをclick時に行う動作
  }
  //Value = 1でユーザによるclick Value = 2でJavaScriptによるクリック
  this.HiddenField1.Value = "0";
 }
}

485:nobodyさん
09/06/29 23:19:21 fVwdImLx
全てのページに、URLにuserid=XXXX
といった文字列を追加したいのですが
アプリの本数が多くて、簡単に追加できる方法ないですかね?

486:nobodyさん
09/06/29 23:30:27
>>485
すべてのページでgetを受け取れるようにしたいのか、
すべてのページのハイパーリンクにgetのクエリを付与したいのか
詳しく書いてくれないと何とも言えない。

でもuseridが変更されるとこまると思うから常識的にはsessionを使うべきだと思う

487:nobodyさん
09/06/29 23:35:02
>>486
説明不足でした。getのクエリ文字列に追加したいのです。

sessionを使うのが普通なのは承知していますが
環境の都合上使用ができないのです。(クライアントのCOOKIEも)


488:nobodyさん
09/06/29 23:42:59 fVwdImLx
また、言葉足らず・・・
sessionを使用ができないのではなく、
sessionだけではなく、GETのクエリ文字列にもパラメータが必要ということでした。

489:nobodyさん
09/06/29 23:49:37
>>488
response.redirectでやると思うが、?userid=xxxxって追加する専用メソッドを入れたらいいんじゃない?

追加メソッド(string url){
 return url+="?userid="+this.userid;
}

みたいな感じで、useridがどこにあるのか知らないけど

どなたか>>478もお願いしますm(_ _)m

490:nobodyさん
09/06/30 00:00:00
>>489
やはり、その方法しかないですかね?
useridはIIS上で保持しています。

URLに付加された状態でProxyを通過させたいんですよね・・・
(言葉足らずで情報が小出しになってしまい申し訳ないです)

491:nobodyさん
09/06/30 00:31:17
プロクシを通過させると何か問題なの?


俺ならSystem.Web.UI.Pageを継承するクラスUserPageを作成して、
private int UserIDみたいなメンバ変数と
public void Redirect(string url,)みたいなメソッドをを作成して
urlとUserIDからRedirectさせるようにする

んで、そのクラスを継承するページを設定するかな?
public partial class Default : UserPage
みたいな感じで
そうすれば各ページでuseridを取得するルーチンを書かなくて済むし、
現状のresponse.redirectをUserPage.Regirect(string url)に置換するだけで済むし

492:nobodyさん
09/06/30 01:25:00
>>478

public class Person
{
private string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}

private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}

[WebMethod]
public List<Person> GetPersonList()
{
List<Person> aaa = new List<Person>();
aaa.Add(new Person { Name = "Taro", Age=8 });
aaa.Add(new Person { Name = "Jiro", Age = 7 });
return aaa;
}

でとりあえず動いてるみたいなんだが、どんなエラーなんだ?

493:nobodyさん
09/06/30 01:26:01
半角スペース消えるの忘れてた・・orzスマソ

494:479
09/06/30 09:14:08
>>482,484
ご教授ありがとうございます。おおよその動きは理解出来ました。

>AJAXを使えばJavaScriptでも簡単にできるかもしれないけど、
AJAXは使っています。
その場合、提示された処理より簡単に実装出来るのでしょうか?
出来ればこちらのやり方も教授頂けると嬉しいです。

>>483
ご教授ありがとうございました。 

495:478
09/06/30 10:15:56
>>492
ありがとうございます、新しいページで作り直したら動きましたorz

496:nobodyさん
09/06/30 16:05:45
>>494
AJAXなら、フォームからフォーカスが外れるたびに入力内容をチェックしにいって、
重複か重複でないかをチェックして、ScriptManager.RegisterStartupScriptで
JavaScriptで定義した変数にbool値を格納する
例 var isDuplicate = true;

登録ボタン押下時に、JavaScriptでisDuplicateの変数内容によって、
onSubmitで表示するconfirmの表示文字を変更させればいい。
cancel時にPostの処理を中止するのはどちらも同じだから。

497:479
09/06/30 17:26:30
>>496
ご丁寧にありがとうございます。
482,484を実装し、期待する動作は確認出来ました。
作成しデバッグしている最中にASPの制御、と言うかスタンドアロン(VB)との違いが良く分かりました。
(それにより)496の内容もすぐに理解出来ました。応用させて頂きます。
ご教授頂いた事に感謝致します。
本当にありがとうございました。

498:nobodyさん
09/07/01 17:57:52
MSの開発技術大全のASP.NET編で、SQLDataAdapterコントロールが
デザイナにD&Dできるみたいな記述になってるけど、VS2005や2008でも出来たっけ?

499: [―{}@{}@{}-] nobodyさん
09/07/01 18:29:24
>>498
SqlDataSourceとかObjectDataSourceコントロールの事じゃないか

500:nobodyさん
09/07/02 20:39:30 ZUKdZhY7
ASPでjavascriptを使わずにあるボタンを押したら、とあるテキストボックスに1を入力するっていう処理をやりたいのですが、
今まではポストバックさせてやっていたのですが、そうするといちいち画面が切り替わるのがうっとうしいので画面が切り替わらないで処理をやりたいです。
可能でしょうか?

501:nobodyさん
09/07/02 20:54:55
不可

502:nobodyさん
09/07/02 21:15:02 ZUKdZhY7
>>501
ありがとうございます
そうですか、あきらめてjavascript使うしかないですね



503:nobodyさん
09/07/02 21:46:24
1って入力してもらう

504:nobodyさん
09/07/02 21:51:06 ZUKdZhY7
目的は1を入力した状態にしたいのではなくて、テキストボックスをreadonlyにしたいのです。

javascriptで実装するにはどういうコードを書けばいいのでしょうか?

505:nobodyさん
09/07/02 21:57:01

マジレスすると、TextBox.Textに1を入れた後にTextBox.ReadOnlyにtrueを設定

506:nobodyさん
09/07/02 21:59:45 ZUKdZhY7
ポストバックさせたくないんですよ

507:nobodyさん
09/07/02 23:41:47
AJAX使いなよ
ポストバックしてるけどしていないような感じで実現できるから

508:nobodyさん
09/07/02 23:48:58 ZUKdZhY7
一番簡単に実装するには何がいいでしょうか?
当方VB、Cの経験しかありません

509:nobodyさん
09/07/02 23:56:35
そろそろスルーで

510:nobodyさん
09/07/03 00:01:26
WebアプリなのにJavaScriptもポストバックもだめとかそもそもが間違ってるよな。
スタンドアロンアプリでも作ってろよ

511:nobodyさん
09/07/03 00:11:41 WYeGS7LZ
しょうがないじゃん、最近はじめたんだから。
radiobutton_checkedイベントやdropdownlist_chengedindexイベントでいちいち画面がロードされるのうざいでしょ?


512:nobodyさん
09/07/03 00:30:44
>>499
いや、SqlDataAdapterだ。俺の目が腐ってなければ・・

ちなみにいまVS2008で試したがグレーアウトでデザイナにはドロップできない。
VS2005ではできるか試してもらえる人はいるだろうか。

グレーアウトになってるってことは使うなってことだよなぁ
手打ちでコーディングはできるんだから。

513:nobodyさん
09/07/03 01:20:01
silverlight使えよ。

514:nobodyさん
09/07/03 01:41:25
>>511
>しょうがないじゃん、最近はじめたんだから。
ブラウザは散々使っているんだろうから、その経験則から何が実現可能か不可能か判断できずに、
最近始めたばかりだと開き直るようじゃあ、あなたにWebアプリは向いてないよ。

↓お好きなのドゾ
Silverlight Flash Ajax ActiveX JavaApplet

>>512
標準ではツールボックスにSqlDataAdapterの表示がないんだが、
どれを参照すれば表示されるん?

515:nobodyさん
09/07/03 01:52:55
>>514
コントロールツールボックスを→クリで「全て表示」とかなかったっけか

516:nobodyさん
09/07/03 13:20:41
>>512
2005は手元に無いからわからんが、2003なら出来るな
データアダプタ構成ウィザードが立ち上がってきた

517:500
09/07/04 00:48:45 gSOLs+sG
いろいろ調べた結果ユーザーコントロールを使用することにより実装することができました
ここって結構無知が多いんだな

518:nobodyさん
09/07/04 01:41:16
PostbackもJavaSciptも使用せずに動的に変更なんてできませんよw

519:nobodyさん
09/07/04 01:43:34
だなぁ、多分ASP.NET自体を新しい概念で開発したんだろうなw
その場合.NETって名前そのものが変わると思うけどw

520:518
09/07/04 01:50:28
>>519
無知で結構だから、もし実現できるのなら教えてほしいよ

何を勘違いしたんだろうな。
ユーザコントロールつかってもポストバックはするし。
ユーザコントロールはJavaScriptの実装には不向きだから、
AJAXでも実装したんかな?

521:nobodyさん
09/07/04 02:05:56
ICallBackEventHandlerで勘違いしたに20000000000ジンバブエドル

522:nobodyさん
09/07/04 02:19:19
JavaScriptおもいっきしつかっとるやんw
つか、それならAJAX使ったほうが楽でしょ

523:nobodyさん
09/07/04 04:29:22
要は画面が切り替わったのに気付かなければいいんだろ?
つ Page.SmartNavigation

ASPとASP.NETは別物だからちゃんと区別して書こうな
ホントにASP.NETじゃないASPの話だったらスレ違いだがなw


524:nobodyさん
09/07/04 09:47:11
>>517
UpdatePanelで勘違いしたに30000ペリカ

525:nobodyさん
09/07/04 16:47:14
>>523
聞いたことがないと思ったら2.0以降でDeprecatedか

526:nobodyさん
09/07/04 17:25:28
ここ最近みてると、

ASP.NET→JavaScriptの関数の実行(引数引き渡しも含む)
JavaScript→ASP.NETのメソッドの実行(引数引き渡しも含む)

という需要が多そうだな

527:nobodyさん
09/07/05 11:58:29 Km3uJP2Y
HTMLデザイナの表示をカスタマイズで
カラムの幅を狭めると、

デー
タバ
イン
 ド

みたいになって縦長になってウザイっす。。
なんで「データバインド」なんて意味のない文字列を表示させるのかな。
これを消したいです。なんか方法ありませんか????

528:nobodyさん
09/07/05 14:08:13
データバインドであることがわかるし、
縦長になるとデザイン上の狂いのあることが発見できることもある
ウザイときもあるが表示のおかげでデザインの狂いを修正できたことが何度かあるよ

従って一長一短

529:nobodyさん
09/07/05 14:18:45
んなのMSに聞けばいいだろ?
ここはお前のVSサポートセンターじゃねえ

530:nobodyさん
09/07/05 14:22:06
このスレの存在意義なくすなよカス

531:nobodyさん
09/07/05 14:33:29
2chで煽るのが僕のレーゾンデートルですw

532:nobodyさん
09/07/05 15:11:29
>>528
なるほど。そういう物だと理解します。

533:nobodyさん
09/07/05 15:32:32 Km3uJP2Y
GridViewのHyperLinkFieldに対して、2個のSQLのカラムを使って、DataTextFormatStringを作りたいです。

以下のSQLで抽出した2個のカラムを結合した文字列をハイパーリンクに表示させたいです。
select fig_name, fig_number from figure

これで抽出できるのはおのおの、
・fig_name:
'図'と'表'のいずれか
・fig_number:
図表番号。数字。

とします。

そしてハイパーリンクにはこの2個をくっつけて

“図1”とか、“表2”とかにしたいです。

とりあえず、以下のようにやったけどだめでした。。
DataTextField="fig_name,fig_number"
DataTextFormatString="{0}{1}"

どなたか、ヒントでも結構ですのでよろしくお願いします。。

534:nobodyさん
09/07/05 17:32:49
>>533
簡単に思いつくのは、TemplateFieldで自前で追加

535:nobodyさん
09/07/05 17:55:40
SQLのクエリで自前で合成したフィールドを作ればいいんでないの
SELECT (Table.fig_name + Table._number) AS fig_fullname FROM Table
とか。

でもこれだとSQLDataSourceが使えなかったり、
GridViewの編集や削除が使えない可能性があるから嫌われそうだけど。
>>534のTemplaterFieldにしても編集とかできなさげ。

んで、結局、編集、削除、追加は自前で実装して、
どうせ実装するならRepeaterでいいじゃんということに落ち着く流れになりそう。

536:nobodyさん
09/07/05 21:51:56
>>534,535さん
ありがとうございます。
RowCreateでデータベースから抽出された結果にアクセスできたので、
そこで文字列をつくって、ハイパーリンクに貼り付けました。
やりかたはダサイかもしれませんが、まぁまだ素人なので。。

537:nobodyさん
09/07/06 00:03:42
ユーザーコントロールのIDを取得したいのですが、どうすればいいのでしょうか?

538:nobodyさん
09/07/06 00:41:21
ClientID

539:nobodyさん
09/07/06 01:25:51 bdwzJZ3p
UpdatePanel凄すぎワロタ。やっぱMSはすげーなぁ。

540:nobodyさん
09/07/06 06:49:00
>>524
おめでとう どうやら君が真のエスパーだったようだ

541:nobodyさん
09/07/06 10:36:39
開発技術大全って.net 3.5以降とかのは出版されてる?

>>516とかみるとかなり古そうだが。。

542:nobodyさん
09/07/06 12:44:03
開発技術大全は記述されてるフレームワーク関連は古いが、
それ以前のASP.NETのアーキテクチャに関する仕組みを知りたいということなら
そんなに色あせないで見ることが出来る。

データベース関連ならADO.NETとLink To Entitiesの本を買うべきだし、
コントロールの使い方ならもっと別の本を買うべき。
それに、どうせいろいろやりたくなると、
DataSet+Repeaterコントロールに落ち着くことになるからね


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4133日前に更新/262 KB
担当:undef