【質問】ASP.NETスレ ..
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コントロールに落ち着くことになるからね
543:nobodyさん
09/07/06 18:51:33 /VP1pSJi
テキストボックスのIDをascxからaspxに持ってきたいんだけど、string型になっちゃうのは仕様なんですが?
textbox型で持ってくることは出来ないのでしょうか?
ctypeで変換しようとするとstring型はtextbox型へ変換できませんってでます
544:nobodyさん
09/07/06 19:01:42
無知な俺らに聞いても無駄だと思うが
ユーザコントロールを作るということは、新しいクラスを設計するということ。
ユーザコントロールにサーバコントロールを配置するということは、
そのクラスのメンバ変数にサーバコントロール型のオブジェクトを
privateのスコープで持つということと同じなので、
ユーザコントロール側で、そのテキストボックスのインスタンスを公開するプロパティを宣言すればいい。
そうすれば、ユーザコントロールに配置したテキストボックスのIDは知る必要がない。
でもそれだと隠蔽の意味がなくなってしまうので、
外からでも変更可能なプロパティだけを
ユーザコントロールのプロパティとして再定義して公開するのが普通のやり方。
545:nobodyさん
09/07/06 19:11:22 /VP1pSJi
>>544
つまりどういうことですか?
コードで書いて教えてください
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub
・main.aspx
dim TextName as textbox = name
TextBox.text="Test"
今はこんな感じで書いていてだめになっています
546:nobodyさん
09/07/06 19:32:14
無知だからVBはわからないがC#だと
public string Text
{
get { this.TextBox.Text = value; }
}
547:nobodyさん
09/07/06 19:35:52
ああget→setかな
すまん無知で
548:nobodyさん
09/07/06 19:37:50
Protected ReadOnly Property name() as TextBox
Get
Return txtname
End Get
End Property
でいいんちゃうか。
549:nobodyさん
09/07/06 19:41:53 /VP1pSJi
>>548
txtnameだけでIDを送ることができるんですね。
ありがとうございました。
550:nobodyさん
09/07/06 19:43:38
>>548
少なくともユーザコントロールで、所有してるオブジェクトをそのままプロパティで公開するのは止めたほうがいいよ
551:nobodyさん
09/07/06 19:57:47
それは分かってるがID:/VP1pSJiが何をしたいか分からんことには。。
552:nobodyさん
09/07/06 20:16:06 /VP1pSJi
すいません>>545がちょっとまちがっていました
・user.ascx
protected sub name () as textbox
get
return txtname.clientID
end get
end sub
・main.aspx
dim TextName as textbox = name
TextName.text="Test"
つまりユーザーコントロールにあるコントロールをaspx側で操作したいというこです
553:nobodyさん
09/07/06 20:19:06
だからコントロールのプロパティをUserControlのプロパティとして公開しなさいっての
554:nobodyさん
09/07/06 20:21:29 /VP1pSJi
>>553
どうやるんですか?
555:nobodyさん
09/07/06 20:57:29
>>554
>>546-547
556:nobodyさん
09/07/06 22:05:11 Igs6oFx6
質問させてぇ〜
「無効なポストバックまたはコールバック引数です。
イベントの検証は、構成の <pages enableEventValidation="true"/>、
またはページの <%@ Page EnableEventValidation="true" %> を使用して・・・」
っていう糞長いエラーが。。
状況はMultiViewの中のViewのなかのGridViewのなかに配置したTemplateField(イメージボタン)
に、
CommandName="delete"
OnClientClick="return confirm('削除してよろしいですか?');"
ってプロパティ設定をして、ゴミ箱のイメージボタンをおしたら削除されるようにしたわけ。
で、さらにこのGridViewのイベントハンドラを以下のようにしてるわけ。
OnRowCommand = "GridViewMeans_RowCommand"
で、このイメージボタンを雄と件のエラーが発生します。。。
そもそもこのエラーって何を意味するの?
「ぽすとばっくやコールバックのイベントが、それをレンダリングしたサーバコントロールから由来するとだめ」
しかもセキュリティの理由から??
意味が分からない。
意味が分からないから対処方法も想像できない。単にenableEventValidation="false"にすればいいよ、とか
意味も分からず闇雲にトライエラーしたくないし。
だれか、ずばっと、こういうパラダイムがあるから、それを解決するためにこういうセキュリティ上の配慮が必要で、そのために
チェックしてるんだ!!!とか男らしい回答求む。
557:nobodyさん
09/07/06 22:24:58
>>556
URLリンク(techbank.jp)
558:nobodyさん
09/07/06 22:53:47
>>557
ご回答ありがとうございます。
するってぇと、何でImageButtonをViewStateに保存しちゃまずいんですかね?
そういうモノだから??
559:nobodyさん
09/07/06 22:56:34
とりあえず試してみました。
変わりませんでした。。
やはりあの、、原理を。。
560:nobodyさん
09/07/06 23:10:21
例えばRepeaterやGridViewコントロールなどのように、
動的に行が生成されるコントロールで、
さらに動的にRepeaterやGridViewなどのような動的に行を生成するコントロールを作成し、
その中でClickイベントを実装すると、その問題が発生するということだったはず。
ページによって存在するかどうかわからないイベントの発生元が存在した場合に、
それを検証する術がないのでエラーになるという感じだったような気がする。
例えばRepeaterの中のLiteralコントロールに、サニタイズをせずに文字列を表示させてしまい、
擬似的にポストバックされるコードを記述されてしまうのを検知するのと区別が付かないとかなんとか。
記事のありかは忘れた。
561:nobodyさん
09/07/06 23:23:44
>>560
おお〜。なるほど!ありがとうございます
分かりません!
でも自分の頭じゃ理解できないってことだけは分かりました。
まぁMFCなんかでもダイアログボックスを表示中に他のタイマーとかのイベントがくると
ダイアログボックスのなかのメッセージポンプがそれを処理しちゃって、
その辺を考えて作らないといけないとか、そんな苦労を思い出します。
要は凝ったフレームワークにありがちな落とし穴って事ですかね。
うーん。困ったw
562:nobodyさん
09/07/06 23:35:38
>>554
・main.aspx
dim TextName as textbox = CType(ユーザコントロールのID.FindControl("txtName"), TextBox)
これでお前のやりたいことはたぶんできるだろう
これをやるべきじゃないとか何とかいろいろあるんだが、
まあそれは勉強してくれと言うしかない
563:561
09/07/07 00:48:14
いろいろ試行錯誤した結果、TemplateFieldのItemTemplateの中身がLinkButtonだと削除機能は全く問題ないけど、
ImageButtonだとだめみたいです。
ImageButtonにしてEnableViewStateをFALSEにしてもだめみたいです。
なんか、ImageButtonがだめのかねぇ。
もう寝ます。
564:561
09/07/07 21:59:56
海外のサイトあさって回答を見つけたよ。
なんでもGridViewのサーバーサイドのイベントが2回以上起こると発生するらしい。
自分の場合は最初に(書いてなかったけど)RowCreateイベントを使ってる。
そして2回目はボタンをクリックしたときに発生する。
この2回のポストバックにおいて、RowがもってるID(つまりe.Row.ID)が食い違っていると
この検証に引っかかるらしい。
(ただのMSのバグじゃねーの??)
自分の場合、最初はRowCreateで、この時点ではe.Row.IDはNULL、たぶんボタンをクリックしたときはなんか値が入ってるんだろうね。
それが食い違っているからだめ〜ってこと。
なんで最初にユニークな値を突っ込んでおけばいいらしい。
つまり
RowCreate()
{
e.Row.ID=Guid.NewGuid().ToString();
}
これでOKだった。でもなぜLinkボタンならよいのかは不明。Linkボタンはポストバックじゃないからかな。
565:nobodyさん
09/07/07 22:06:15
1ページに対してイベントは1回だから別に間違ってないだろ
それこそ、故意にイベントを発生するタグを挿入される危険性を排除するのが目的なんだから
566:nobodyさん
09/07/07 22:10:13
なんだ、兄さんよく知ってる感じだな。
もっと早く出てきて教えてくれよ。
567:nobodyさん
09/07/07 22:27:17
IDが変わるような操作したあと、databindし直すのが正しい操作じゃないのか?
568:nobodyさん
09/07/07 22:58:50
>>567
たぶんあなたの言っていることは正しい。
569:nobodyさん
09/07/07 23:52:10
javascriptどうすれば簡単に覚えられますか?
VBに浸りすぎてぜんぜんわからん
570:nobodyさん
09/07/07 23:57:57 ID58Jon/
.NETではなくASPなのですが、スレがないのでこちらに書き込みます。
DBテーブル上にBASE64エンコードされた画像データ(テキスト)が格納されています。
これをデコードしてresponseで出力したいのですが。。
エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ちなみにBASP21でデコードすると
Dim o_buf
o_buf = objBASP.BASE64(rsRecord.Fields("Field_name").value, 1)
Response.BinaryWrite o_buf
Response.End
のような感じになりますが、o_bufにバイナリイメージの先頭数byteしか入ってこなかったので、
BASP21は使えないと考えています。
「これぞ王道」のような方法があればお教えください。
いまさらながらASPでプログラムを作成する案件がでてきて、慣れない中苦戦しているもので。。
よろしくお願いします。
571:nobodyさん
09/07/08 00:10:09
>>570
>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
直接デコードしたら表示できる?
>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ファイル経由にしたらデコードできる?
>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?
>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?
572:nobodyさん
09/07/08 00:19:39
>>569
VBを窓から投げ捨てる
573:nobodyさん
09/07/08 01:35:13 ZNTcUj46
レスありがとうございました。
>>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
>直接デコードしたら表示できる?
>>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
>ファイル経由にしたらデコードできる?
ファイル経由でのデコードはできています。(BASP21利用で)
このファイルをビューアで見ることもできます。
サーバ負荷が高くなりそうなので、ファイル経由は避けたいと思っています。
>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?
BASP21の関数利用の結果がそうなっていました。
ここは理由はよくわかりません。。
>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?
バイナリのまま保存する方法も現在調査中です。
エンコードする方法と、両方を調べている最中です。
どうぞよろしくお願いします。
574:nobodyさん
09/07/08 09:09:29
>>573
モード6と7が対なのはわかるんだけど、
それと、その他のモードに互換性があるのかな
他のは、いわゆるwidestringだけに対応してて、バイナリには対応してないんじゃないのかな。
異なるモード間で互換性がないと意味がないから、
ファイルをエンコードするのに、FSOでファイルを読み込んで、
一度変数に入れてから6と7以外のモードで変換してみたらできるのかな?
575:nobodyさん
09/07/08 18:32:48
aspの質問ですらなく、BASP21の話じゃないか、それ
BASP21って専用のスレとかないのか?
それか、サポート付きの有償版みたいなのなかったか?
BASE64ってそんなに難しい規格じゃないから、
自分でデコードする関数書いたらどうだね
576:nobodyさん
09/07/09 00:56:21
このスレ的には、
FCL使えって感じだけどな
577:nobodyさん
09/07/09 17:08:52
Framework Class LibraryってClassicASPにも存在するの?
578:nobodyさん
09/07/09 22:37:40
ページの名前変えたらものすごい変なエラーが出るようになった。。
579:nobodyさん
09/07/09 22:59:29
ASP.NETは一つ一つのページがpertialクラスになってて、
ページ名がクラス名になってるんだけど、
リネームしてもそのクラス名は変更されないから
リネームしたことでページ名が重複しちゃったんじゃね?
580:nobodyさん
09/07/09 23:02:18
>>579
まぁ変え方がまずかったんだと思う。いま一生懸命直してます。
581:nobodyさん
09/07/09 23:11:57
1日1回はローカルでもいいから、別のトコにバックアップとったほうがいいよ
データベースがらみとか、アドオンの帳票がらみでわけわからん具合になること結構あるから
582:nobodyさん
09/07/11 14:43:11
よくも悪くもバッドノウハウの固まり
583:nobodyさん
09/07/13 00:21:32
画面上に100個位コントロール(TextBox)が並んでて、Postされた時に一々値を拾うのが
めんどくさいんですが。なんか上手い方法無いですかね?
特に、Repeaterで自動生成されたTextBoxとか、IDもサーバで勝手に振られるのでどうして
いいのか分かりません。
やりたいこと:Postされた値をなんか上手い方法でDataSetに入れてしまいたい。
DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
584:nobodyさん
09/07/13 01:18:02
>>583
具体的には忘れたけど、こんな感じ
■Repeaterの場合
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
RepeaterItem ri1 = this.Repeater1.Items[i];
TextBox textBox = (TextBox)ri1.FindControl("textBox");
}
■ページにポトペタした場合
Control control = this.Page.FindControl("controlName");
でID名でコントロールが取得できるので、連番で名付けてループさせて取得すればいい
DataSetに格納したい行をClassか、structで宣言して、
ループする度にインスタンスを生成し、IList<T>に格納していけばいい。
別途IList<T>からデータを取得してDataSetに格納するクラスを別途作成す。。
585:nobodyさん
09/07/13 02:12:46
>>583
>DataBindって参照しか出来ないEvalじゃなくて、双方向更新も可能なメッソドもあるとか?
使い勝手があれだから、きっと絶対必ず役に立たんがBindというのはある。
例えばObjectDataSourceのConflictDetectionを設定してやれば、
UPDATEやDELETEで指定したメソッドに対して、
変更後の値と変更前の値を自動で放り投げてくれる。
586:nobodyさん
09/07/13 16:29:19
VS2005 + IIS6.0 + IE6.0 or 7.0で開発しております。
DataGrid(GridViewではありません)のヘッダー固定に関しての質問です。
DataGridのヘッダー行を固定しようと思い、ネット上でサンプルを参考にして
浮いているように見えるのですが、とりあえずヘッダー行の固定を実装しました。
参考URL:URLリンク(jsajax.com)
ですが、この固定しているヘッダー行が常に最前列に出ているようで
画面上のメニューバーから展開されるサブメニュー項目が、ヘッダーの後ろに表示されてしまいます。
メニューバーはJQueryで作成しています。
参考URL:URLリンク(css-tricks.com)
JQueryで作成している箇所は、DBから動的に項目を取得して
メニュー自体をHTMLで作成しているので、JQueryをはずすことはできません。
ヘッダー行かメニュー項目のZ-INDEXで解決するかと思ったのですが、
どうも効いてないようで解決方法の糸口が見つかりません。
どなたか詳しい方いらっしゃいませんでしょうか?
587:nobodyさん
09/07/13 16:53:47
jquery.dropdownPlain.jsでz-index記述してみたら
588:nobodyさん
09/07/13 18:05:58
>>587
やってみましたが結果は変わらずでした
固定しているヘッダー行が浮いたような状態になり、
DataGridよりも若干右にズレているのも気になります。
これが問題なんでしょうか・・
589:nobodyさん
09/07/13 18:25:38
メニューを表示させなければうまくいくのか?
あと改行してメニューが干渉しない位置にヘッダーを表示させて場合はうまくいくのか?
うまくいくのならメニューを表示させたことで、メニューのスタイルシートが、
ヘッダのスタイルシートに悪影響を及ぼしてるんだろうから、
メニューの何が悪さをしてるのか、一つ一つスタイルを削って試して見るしかない
590:nobodyさん
09/07/14 21:55:30 s5DuVBkc
VS2008、C#でASP.netという構成ですが・・・すいません、ビルドの後、プリコンパイルされたDLLというのは何処に格納されるのでしょうか?
ASP.net 2.0の、しかもCodeBehind属性を使っているレガシーなアプリをメンテナンスしているのですが、CodeBehindに指定されている.csの内容を修正してもそれが反映されません。
(aspxの内容を修正した場合は反映されています)
ビルドしてプリコンパイルすればいいかと思ったのですが、ビルドしても\binに格納されているDLLが更新されないのです。
おそらくどこかに設定があると思うのですが、見つけることが出来ませんでした。
よろしければアドバイスをお願いします。
ちなみに、Webサイトのプロパティの「MSBuildオプション」→「出力フォルダ」は、修正してみましたが特に変化はありませんでした。
591:nobodyさん
09/07/14 22:00:55
プロジェクトフォルダ-releaseフォルダの中かな
もしくはdebugフォルダ
592:590
09/07/14 22:44:54
>>591
早速のお返事、ありがとうございます。
が・・・ありませんねぇ、どちらも。
もしかしてプリコンパイルは関係ないのかな? でも、今参照しているbinの中のdll、参照外すと動かなくなるしなぁ・・・。
593:nobodyさん
09/07/15 01:38:50
VS2008のASP.NET2.0ということは、Webアプリでなく、Webサイトだと思うけど、
参照設定で、他のDLLを参照する設定になってない?
普通、通常に使用しているだけなら、Webサイトで作成していてbin以下にdllが
作られることはないと思う。
だからビルドしても、外部参照のdllは更新されるはずがないような気がする。
webアプリだったら、あまり詳しくしらないのでよくわからん。
594:nobodyさん
09/07/15 05:36:31
CodeBehindならWEBアプリな予感
だったらビルドしたらbinディレクトリにあるはずだが
WEBサイトならビルドしてもDLLは(見えるところには)作成されない
プリコンパイルってVSからできたっけ?
というか、参照してるDLLってなんのこと言ってるんだ?
そのプロジェクト以外のDLLをBinに入れて参照してるなら、
そんなもんはそのプロジェクトいくらビルドしても変わるわけないぞ
595:nobodyさん
09/07/15 05:56:10
>>594
IDEからプリコンパイルできると書いてあるね
URLリンク(msdn.microsoft.com)
Webサイトでもコードビハインドだし、
「プリ」ってわざわざ付けるということは、webサイトなんじゃないかと思うんだけど。
596:nobodyさん
09/07/15 11:45:02
エスパー解答
実はプリコンパイルは関係なくて、
>CodeBehindに指定されている.csの内容を修正してもそれが反映されません。
>(aspxの内容を修正した場合は反映されています)
のあたりを詳しく聞く必要があるとみた!
.csの内容を修正しても反映されないって、例えば画面の初期化処理だとか、
ポストバック時の処理を変えたりしてみても以前のロジックが走る、
ってことかな?
.csを削除してみるだとか、新しいページ追加して確認してみるとかはどうでしょう?
プリコンパイルとかWebサイトとかの話はよく分からないので、分かる方お願いします。
597:590
09/07/15 11:55:15
>>593-595
失礼、「Webサイト」でしたね。が・・・。
>WEBサイトならビルドしてもDLLは(見えるところには)作成されない
あれ? もらってきたソース一式に、\binディレクトリがありますけど・・・?
えっと、binにアプリケーション名.dllを放り込むと、VSの方で勝手にそのdllへの参照設定をします。
その参照設定を外すとdllが削除され、「型 '(アプリケーション名).Global'が読み込めませんでした」ってコンパイルすら通らなくなります。
(当然、「デバッグ」→「デバッグ開始」でも動きません)
それで、「ああ、ビルドしてdllを作り直せば、.csへの修正が反映されるのね」と思ったのですが、
「ビルド」→「Webサイトのビルド」ではDLLが作られない/更新されない・・・おや? というところで詰まっているのです。
うーん・・・別に、開発してるときはプリコンパイルなんてしてくれないくていいのになぁ。
598:590
09/07/15 11:57:39
>>596
おっと、すれ違い失礼。ええ、問題になっているところはソコですね。
ただ、>>597のような考えで「プリコンパイルされたDLLが更新されないのが問題だよね?」と思ったのですよ。
ちょっとやってみましょう>新しいページを追加
599:590
09/07/15 12:23:54
>>598
ダメですね。「型'アプリケーション名.hogehoge'を読み込めません」となります。
.csを無視してDLLを見に行ってるような感じです。
600:590
09/07/15 19:32:14
お騒がせしました。
結局、.net 2.0を明示的に指定して最初からソリューションを作り直し、そこにソースをコピーして再ビルドをかけました。
何が悪かったんだろう・・・。
※ツリー部にドラッグ&ドロップでコピー可能、しかも関連ファイルまで根こそぎ持っていくのにはちょっと感心しました>VS2008
とりあえず.csの修正は反映されるようになりましたが、やはりリビルドはしないとダメですね。
601:nobodyさん
09/07/15 19:37:54
>>600
ソースファイルのタイムスタンプがおかしくなってるとか、マシンの時刻がおかしくなっているとか
プロジェクトの何かのファイルのタイムスタンプがおかしくなっているとか…。
602:nobodyさん
09/07/15 19:55:28
たぶん、webアプリケーションと間違えてないか?
それか一つのソリューションに、webサイトプロジェクトと、他のプロジェクトがあって、
webサイトプロジェクトから、他のプロジェクトへの参照設定がされてる。
dllは、他のプロジェクトで作成したクラスのdllだからASP.NETの.csを変更してビルドしても
何の変化もないので不思議がってる。
こんなところだろ
603:nobodyさん
09/07/16 01:59:14
現在Visual Studio 2008(VB.net)を使用しMasterPageの中に
<div></div>ブロックで囲んだGridViewを配置し、
ヘッダー行を固定しようと、.Freezingのお決まりのCSSを書き
GrdiViewHeaderのCSSにそのFeeezingのCSSを指定したところ、
ヘッダー行は正常に固定する事が出来たのですが、
<div>ブロックで正常に width:450pxと指定しているにも関わらずGridViewのヘッダー行(だけ)が
その<div>ブロックの幅を右横に突き抜けて表示されてしまいます。
一体何が原因なのでしょうか?
※IE7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
指名 | 年齢 | 趣味 | 経験年数 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A 15 || ↑ヘッダー部分だけが突き抜けてしまう。(ここで趣味・経験年数)
B 15 ||
C 15 ||
〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜|
604:nobodyさん
09/07/16 03:01:51
スタイルシートはdivで指定しても、その内側のタグのスタイルの指定で
表現してくれないことがあるから、そのヘッダー行に直接スタイルを適用してみたら?
というか、そういう時は、生成されたhtmlのソースをローカルなどにコピペしてブラウザで表示させるなどして、
関係ないhtmlタグを次々と消していって、目的とするタグだけで確認したほうがいいよ。
まったく関係無いと思われるスタイルが影響している場合があるから。
その目的とする表示を構成しているタグだけを残して他のタグをすべて消去し、
それでも問題が発生するかどうか確認するなどして、
他の要素が影響を及ぼしてる可能性をなるべく排除すべき。
605:nobodyさん
09/07/16 03:18:17
>>604
ありがとうございます。
今日会社で試してみます。
606:nobodyさん
09/07/16 09:29:33
>>600
レガシーなって、もともとはどのバージョンで作ってあったんだ?
それはWEBアプリで作ってあったのか、WEBサイトでつくってあったのか?
>>602
俺がエスパーするに、元がWEBアプリだったのを、今はWEBサイトで修正しようとしてる
今修正した部分はWEBサイトなんで、アプリケーション.DLLに反映されない
既存部分はWEBアプリなんで、アプリケーション.DLLへの参照がないと動かない
ソース全部コピーしたってことは、今全部WEBサイトになったんで動いてる
ま、こんなとこだろう
607:590
09/07/16 16:43:13
>>606
そうですね。*.slnファイルも貰ったのでそのまま開いたのですが、こちらで空のwebサイト、webアプリを作成して比較してみると、webサイトの*.slnのようです。
これで開発してる、って言ってたんだけどなぁ・・・。
608:nobodyさん
09/07/16 19:05:01
>>606
その可能性が高そうだね
つかwebアプリをwebサイトに移植しても、そのままで動作するんだな
609:nobodyさん
09/07/16 22:19:36
VS2005は知らんが、VS2008でWebサイトを作成してビルドすると
勝手にbinフォルダが作成されてる。その中にaspxに付随する.csやAPP_CODE配下のクラスファイルが
コンパイルされたdllが放り込まれる。aspxのヘッダはこのbinフォルダのdllを見に行くように全て書き換えられる。
別にビルドしなくても、.csのソース付きaspxをWebサーバに配置しても
IISとASP.NETは普通に解釈してくれる(まぁビルドするのと同じことしてるんだろけど)
正式リリース時は速度&セキュリティを考えてビルド方式にしたほうがいいよな。。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4133日前に更新/262 KB
担当:undef