[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 10/17 05:12 / Filesize : 262 KB / Number-of Response : 797
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【質問】ASP.NETスレ Part5【議論】



1 名前:nobodyさん mailto:sage [2009/01/23(金) 09:46:51 ID:???]
●過去ログ
Part1 - 【質問】 ASP.NETスレ 【議論】
pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
pc8.2ch.net/test/read.cgi/php/1111480331/
【質問】ASP.NETスレ Part3【議論】
pc11.2ch.net/test/read.cgi/php/1160355849/
【質問】ASP.NETスレ Part4【議論】
pc11.2ch.net/test/read.cgi/php/1184683786/ (dat落ち?)

あんまり需要ないのかもしれませんが。。。

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

478 名前:nobodyさん mailto:sage [2009/06/29(月) 19:17:18 ID:???]
お世話になります、自分で独自に作ったクラスを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さん [2009/06/29(月) 19:43:32 ID: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さん [2009/06/29(月) 20:51:34 ID:JEwwWVNF]
すでにあるxlsファイルを更新したいんですが、どうすればいいのでしょうか?
A*1に1を入れて保存とかそんな感じでお願いします

481 名前:nobodyさん mailto:sage [2009/06/29(月) 22:31:40 ID:???]
>>480
すでにあるがサーバ上にあるのか、クライアント側にあるのかわからないけど、
サーバ側なら
www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html
で操作できるんでないかね。
Microsoft Excel 11.0 Object Libraryって奴で。

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

482 名前:nobodyさん mailto:sage [2009/06/29(月) 23:18:11 ID:???]
>>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さん mailto:sage [2009/06/29(月) 23:18:11 ID:???]
>>479
OnClientClickだとポストバック前に実行しちゃうよ

proshile.blog.drecom.jp/archive/14
でいけるけど、今ってもっと良い方法がないのかな?
普段1.1使っててわからん。




484 名前:nobodyさん mailto:sage [2009/06/29(月) 23:19:02 ID:???]
>>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さん [2009/06/29(月) 23:19:21 ID:fVwdImLx]
全てのページに、URLにuserid=XXXX
といった文字列を追加したいのですが
アプリの本数が多くて、簡単に追加できる方法ないですかね?



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

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

487 名前:nobodyさん mailto:sage [2009/06/29(月) 23:35:02 ID:???]
>>486
説明不足でした。getのクエリ文字列に追加したいのです。

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


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

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

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

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

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

490 名前:nobodyさん mailto:sage [2009/06/30(火) 00:00:00 ID:???]
>>489
やはり、その方法しかないですかね?
useridはIIS上で保持しています。

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

491 名前:nobodyさん mailto:sage [2009/06/30(火) 00:31:17 ID:???]
プロクシを通過させると何か問題なの?


俺なら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さん mailto:sage [2009/06/30(火) 01:25:00 ID:???]
>>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さん mailto:sage [2009/06/30(火) 01:26:01 ID:???]
半角スペース消えるの忘れてた・・orzスマソ

494 名前:479 mailto:sage [2009/06/30(火) 09:14:08 ID:???]
>>482,484
ご教授ありがとうございます。おおよその動きは理解出来ました。

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

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

495 名前:478 mailto:sage [2009/06/30(火) 10:15:56 ID:???]
>>492
ありがとうございます、新しいページで作り直したら動きましたorz



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

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

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

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

499 名前: [―{}@{}@{}-] nobodyさん mailto:sage [2009/07/01(水) 18:29:24 ID:???]
>>498
SqlDataSourceとかObjectDataSourceコントロールの事じゃないか

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

501 名前:nobodyさん mailto:sage [2009/07/02(木) 20:54:55 ID:???]
不可

502 名前:nobodyさん [2009/07/02(木) 21:15:02 ID:ZUKdZhY7]
>>501
ありがとうございます
そうですか、あきらめてjavascript使うしかないですね



503 名前:nobodyさん mailto:sage [2009/07/02(木) 21:46:24 ID:???]
1って入力してもらう

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

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

505 名前:nobodyさん mailto:sage [2009/07/02(木) 21:57:01 ID:???]

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



506 名前:nobodyさん [2009/07/02(木) 21:59:45 ID:ZUKdZhY7]
ポストバックさせたくないんですよ

507 名前:nobodyさん mailto:sage [2009/07/02(木) 23:41:47 ID:???]
AJAX使いなよ
ポストバックしてるけどしていないような感じで実現できるから

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

509 名前:nobodyさん mailto:sage [2009/07/02(木) 23:56:35 ID:???]
そろそろスルーで

510 名前:nobodyさん mailto:sage [2009/07/03(金) 00:01:26 ID:???]
WebアプリなのにJavaScriptもポストバックもだめとかそもそもが間違ってるよな。
スタンドアロンアプリでも作ってろよ

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


512 名前:nobodyさん mailto:sage [2009/07/03(金) 00:30:44 ID:???]
>>499
いや、SqlDataAdapterだ。俺の目が腐ってなければ・・

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

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

513 名前:nobodyさん mailto:sage [2009/07/03(金) 01:20:01 ID:???]
silverlight使えよ。

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

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

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

515 名前:nobodyさん mailto:sage [2009/07/03(金) 01:52:55 ID:???]
>>514
コントロールツールボックスを→クリで「全て表示」とかなかったっけか



516 名前:nobodyさん mailto:sage [2009/07/03(金) 13:20:41 ID:???]
>>512
2005は手元に無いからわからんが、2003なら出来るな
データアダプタ構成ウィザードが立ち上がってきた

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

518 名前:nobodyさん mailto:sage [2009/07/04(土) 01:41:16 ID:???]
PostbackもJavaSciptも使用せずに動的に変更なんてできませんよw

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

520 名前:518 mailto:sage [2009/07/04(土) 01:50:28 ID:???]
>>519
無知で結構だから、もし実現できるのなら教えてほしいよ

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

521 名前:nobodyさん mailto:sage [2009/07/04(土) 02:05:56 ID:???]
ICallBackEventHandlerで勘違いしたに20000000000ジンバブエドル

522 名前:nobodyさん mailto:sage [2009/07/04(土) 02:19:19 ID:???]
JavaScriptおもいっきしつかっとるやんw
つか、それならAJAX使ったほうが楽でしょ

523 名前:nobodyさん mailto:sage [2009/07/04(土) 04:29:22 ID:???]
要は画面が切り替わったのに気付かなければいいんだろ?
つ Page.SmartNavigation

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


524 名前:nobodyさん mailto:sage [2009/07/04(土) 09:47:11 ID:???]
>>517
UpdatePanelで勘違いしたに30000ペリカ

525 名前:nobodyさん mailto:sage [2009/07/04(土) 16:47:14 ID:???]
>>523
聞いたことがないと思ったら2.0以降でDeprecatedか



526 名前:nobodyさん mailto:sage [2009/07/04(土) 17:25:28 ID:???]
ここ最近みてると、

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

という需要が多そうだな

527 名前:nobodyさん [2009/07/05(日) 11:58:29 ID:Km3uJP2Y]
HTMLデザイナの表示をカスタマイズで
カラムの幅を狭めると、

デー
タバ
イン
 ド

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

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

従って一長一短

529 名前:nobodyさん mailto:sage [2009/07/05(日) 14:18:45 ID:???]
んなのMSに聞けばいいだろ?
ここはお前のVSサポートセンターじゃねえ

530 名前:nobodyさん mailto:sage [2009/07/05(日) 14:22:06 ID:???]
このスレの存在意義なくすなよカス

531 名前:nobodyさん mailto:sage [2009/07/05(日) 14:33:29 ID:???]
2chで煽るのが僕のレーゾンデートルですw

532 名前:nobodyさん mailto:sage [2009/07/05(日) 15:11:29 ID:???]
>>528
なるほど。そういう物だと理解します。

533 名前:nobodyさん [2009/07/05(日) 15:32:32 ID: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さん mailto:sage [2009/07/05(日) 17:32:49 ID:???]
>>533
簡単に思いつくのは、TemplateFieldで自前で追加

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

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

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



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

537 名前:nobodyさん mailto:sage [2009/07/06(月) 00:03:42 ID:???]
ユーザーコントロールのIDを取得したいのですが、どうすればいいのでしょうか?

538 名前:nobodyさん mailto:sage [2009/07/06(月) 00:41:21 ID:???]
ClientID

539 名前:nobodyさん [2009/07/06(月) 01:25:51 ID:bdwzJZ3p]
UpdatePanel凄すぎワロタ。やっぱMSはすげーなぁ。

540 名前:nobodyさん mailto:sage [2009/07/06(月) 06:49:00 ID:???]
>>524
おめでとう どうやら君が真のエスパーだったようだ

541 名前:nobodyさん mailto:sage [2009/07/06(月) 10:36:39 ID:???]
開発技術大全って.net 3.5以降とかのは出版されてる?

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

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

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

543 名前:nobodyさん [2009/07/06(月) 18:51:33 ID:/VP1pSJi]
テキストボックスのIDをascxからaspxに持ってきたいんだけど、string型になっちゃうのは仕様なんですが?
textbox型で持ってくることは出来ないのでしょうか?
ctypeで変換しようとするとstring型はtextbox型へ変換できませんってでます

544 名前:nobodyさん mailto:sage [2009/07/06(月) 19:01:42 ID:???]
無知な俺らに聞いても無駄だと思うが
ユーザコントロールを作るということは、新しいクラスを設計するということ。
ユーザコントロールにサーバコントロールを配置するということは、
そのクラスのメンバ変数にサーバコントロール型のオブジェクトを
privateのスコープで持つということと同じなので、
ユーザコントロール側で、そのテキストボックスのインスタンスを公開するプロパティを宣言すればいい。
そうすれば、ユーザコントロールに配置したテキストボックスのIDは知る必要がない。

でもそれだと隠蔽の意味がなくなってしまうので、
外からでも変更可能なプロパティだけを
ユーザコントロールのプロパティとして再定義して公開するのが普通のやり方。

545 名前:nobodyさん [2009/07/06(月) 19:11:22 ID:/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さん mailto:sage [2009/07/06(月) 19:32:14 ID:???]
無知だからVBはわからないがC#だと
public string Text
{
 get { this.TextBox.Text = value; }
}

547 名前:nobodyさん mailto:sage [2009/07/06(月) 19:35:52 ID:???]
ああget→setかな
すまん無知で

548 名前:nobodyさん mailto:sage [2009/07/06(月) 19:37:50 ID:???]
Protected ReadOnly Property name() as TextBox

Get
Return txtname
End Get

End Property

でいいんちゃうか。


549 名前:nobodyさん [2009/07/06(月) 19:41:53 ID:/VP1pSJi]
>>548
txtnameだけでIDを送ることができるんですね。
ありがとうございました。

550 名前:nobodyさん mailto:sage [2009/07/06(月) 19:43:38 ID:???]
>>548
少なくともユーザコントロールで、所有してるオブジェクトをそのままプロパティで公開するのは止めたほうがいいよ

551 名前:nobodyさん mailto:sage [2009/07/06(月) 19:57:47 ID:???]
それは分かってるがID:/VP1pSJiが何をしたいか分からんことには。。

552 名前:nobodyさん [2009/07/06(月) 20:16:06 ID:/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さん mailto:sage [2009/07/06(月) 20:19:06 ID:???]
だからコントロールのプロパティをUserControlのプロパティとして公開しなさいっての

554 名前:nobodyさん [2009/07/06(月) 20:21:29 ID:/VP1pSJi]
>>553
どうやるんですか?

555 名前:nobodyさん mailto:sage [2009/07/06(月) 20:57:29 ID:???]
>>554
>>546-547



556 名前:nobodyさん [2009/07/06(月) 22:05:11 ID:Igs6oFx6]
質問させてぇ〜

「無効なポストバックまたはコールバック引数です。
イベントの検証は、構成の <pages enableEventValidation="true"/>、
またはページの <%@ Page EnableEventValidation="true" %> を使用して・・・」

っていう糞長いエラーが。。

状況はMultiViewの中のViewのなかのGridViewのなかに配置したTemplateField(イメージボタン)
に、
CommandName="delete"
OnClientClick="return confirm('削除してよろしいですか?');"

ってプロパティ設定をして、ゴミ箱のイメージボタンをおしたら削除されるようにしたわけ。

で、さらにこのGridViewのイベントハンドラを以下のようにしてるわけ。
OnRowCommand = "GridViewMeans_RowCommand"

で、このイメージボタンを雄と件のエラーが発生します。。。

そもそもこのエラーって何を意味するの?
「ぽすとばっくやコールバックのイベントが、それをレンダリングしたサーバコントロールから由来するとだめ」
しかもセキュリティの理由から??
意味が分からない。
意味が分からないから対処方法も想像できない。単にenableEventValidation="false"にすればいいよ、とか
意味も分からず闇雲にトライエラーしたくないし。
だれか、ずばっと、こういうパラダイムがあるから、それを解決するためにこういうセキュリティ上の配慮が必要で、そのために
チェックしてるんだ!!!とか男らしい回答求む。

557 名前:nobodyさん mailto:sage [2009/07/06(月) 22:24:58 ID:???]
>>556
techbank.jp/Community/blogs/mymio/archive/2008/03/28/381.aspx

558 名前:nobodyさん mailto:sage [2009/07/06(月) 22:53:47 ID:???]
>>557
ご回答ありがとうございます。
するってぇと、何でImageButtonをViewStateに保存しちゃまずいんですかね?
そういうモノだから??

559 名前:nobodyさん mailto:sage [2009/07/06(月) 22:56:34 ID:???]
とりあえず試してみました。
変わりませんでした。。
やはりあの、、原理を。。

560 名前:nobodyさん mailto:sage [2009/07/06(月) 23:10:21 ID:???]
例えばRepeaterやGridViewコントロールなどのように、
動的に行が生成されるコントロールで、
さらに動的にRepeaterやGridViewなどのような動的に行を生成するコントロールを作成し、
その中でClickイベントを実装すると、その問題が発生するということだったはず。

ページによって存在するかどうかわからないイベントの発生元が存在した場合に、
それを検証する術がないのでエラーになるという感じだったような気がする。
例えばRepeaterの中のLiteralコントロールに、サニタイズをせずに文字列を表示させてしまい、
擬似的にポストバックされるコードを記述されてしまうのを検知するのと区別が付かないとかなんとか。

記事のありかは忘れた。

561 名前:nobodyさん mailto:sage [2009/07/06(月) 23:23:44 ID:???]
>>560
おお〜。なるほど!ありがとうございます
分かりません!

でも自分の頭じゃ理解できないってことだけは分かりました。

まぁMFCなんかでもダイアログボックスを表示中に他のタイマーとかのイベントがくると
ダイアログボックスのなかのメッセージポンプがそれを処理しちゃって、
その辺を考えて作らないといけないとか、そんな苦労を思い出します。
要は凝ったフレームワークにありがちな落とし穴って事ですかね。

うーん。困ったw

562 名前:nobodyさん mailto:sage [2009/07/06(月) 23:35:38 ID:???]
>>554
・main.aspx
dim TextName as textbox = CType(ユーザコントロールのID.FindControl("txtName"), TextBox)

これでお前のやりたいことはたぶんできるだろう

これをやるべきじゃないとか何とかいろいろあるんだが、
まあそれは勉強してくれと言うしかない

563 名前:561 mailto:sage [2009/07/07(火) 00:48:14 ID:???]
いろいろ試行錯誤した結果、TemplateFieldのItemTemplateの中身がLinkButtonだと削除機能は全く問題ないけど、
ImageButtonだとだめみたいです。
ImageButtonにしてEnableViewStateをFALSEにしてもだめみたいです。
なんか、ImageButtonがだめのかねぇ。
もう寝ます。

564 名前:561 mailto:sage [2009/07/07(火) 21:59:56 ID:???]
海外のサイトあさって回答を見つけたよ。
なんでも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さん mailto:sage [2009/07/07(火) 22:06:15 ID:???]
1ページに対してイベントは1回だから別に間違ってないだろ
それこそ、故意にイベントを発生するタグを挿入される危険性を排除するのが目的なんだから



566 名前:nobodyさん mailto:sage [2009/07/07(火) 22:10:13 ID:???]
なんだ、兄さんよく知ってる感じだな。
もっと早く出てきて教えてくれよ。

567 名前:nobodyさん mailto:sage [2009/07/07(火) 22:27:17 ID:???]
IDが変わるような操作したあと、databindし直すのが正しい操作じゃないのか?


568 名前:nobodyさん mailto:sage [2009/07/07(火) 22:58:50 ID:???]
>>567
たぶんあなたの言っていることは正しい。

569 名前:nobodyさん mailto:sage [2009/07/07(火) 23:52:10 ID:???]
javascriptどうすれば簡単に覚えられますか?
VBに浸りすぎてぜんぜんわからん

570 名前:nobodyさん [2009/07/07(火) 23:57:57 ID: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さん mailto:sage [2009/07/08(水) 00:10:09 ID:???]
>>570
>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
直接デコードしたら表示できる?

>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
ファイル経由にしたらデコードできる?

>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?

>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?


572 名前:nobodyさん mailto:sage [2009/07/08(水) 00:19:39 ID:???]
>>569
VBを窓から投げ捨てる

573 名前:nobodyさん [2009/07/08(水) 01:35:13 ID:ZNTcUj46]
レスありがとうございました。

>>エンコードはBASP21のBASE64関数を使い、ファイル経由で行いました。
>直接デコードしたら表示できる?

>>デコードはファイル経由にしたくないので、なんとか直接出力したいのですが。
>ファイル経由にしたらデコードできる?

 ファイル経由でのデコードはできています。(BASP21利用で)
 このファイルをビューアで見ることもできます。
 サーバ負荷が高くなりそうなので、ファイル経由は避けたいと思っています。

>o_bufにバイナリイメージの先頭数byteしか入ってこなかったので
なんで入ってこないの?

 BASP21の関数利用の結果がそうなっていました。
 ここは理由はよくわかりません。。

>「これぞ王道」のような方法があればお教えください。
バイナリのままデータベースに保存できないの?

 バイナリのまま保存する方法も現在調査中です。
 エンコードする方法と、両方を調べている最中です。

 どうぞよろしくお願いします。


574 名前:nobodyさん mailto:sage [2009/07/08(水) 09:09:29 ID:???]
>>573
モード6と7が対なのはわかるんだけど、
それと、その他のモードに互換性があるのかな
他のは、いわゆるwidestringだけに対応してて、バイナリには対応してないんじゃないのかな。
異なるモード間で互換性がないと意味がないから、
ファイルをエンコードするのに、FSOでファイルを読み込んで、
一度変数に入れてから6と7以外のモードで変換してみたらできるのかな?

575 名前:nobodyさん mailto:sage [2009/07/08(水) 18:32:48 ID:???]
aspの質問ですらなく、BASP21の話じゃないか、それ
BASP21って専用のスレとかないのか?
それか、サポート付きの有償版みたいなのなかったか?

BASE64ってそんなに難しい規格じゃないから、
自分でデコードする関数書いたらどうだね



576 名前:nobodyさん mailto:sage [2009/07/09(木) 00:56:21 ID:???]
このスレ的には、
FCL使えって感じだけどな

577 名前:nobodyさん mailto:sage [2009/07/09(木) 17:08:52 ID:???]
Framework Class LibraryってClassicASPにも存在するの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef