質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

1683閲覧

ASP.NETでボタンを押したときに、処理をしたい

caoce

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2018/04/04 07:44

前提・実現したいこと

こんにちは。
Azure上の仮想マシンでIISでサーバーを動かしています。
ボタンを押したときに、処理をしたいです。
Azureの仮想マシンは性能が貧弱なため、開発環境をつくることができず、リモートで(ローカルで)開発しています。
そのため、ソース中の変数になにがはいっているのか把握するのに、まず文字を出力してみようと考えました。
btn.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");//for debug
がそれです。

発生している問題・エラーメッセージ

ところが、ボタンを押しても、ボタンの文字が変わりません。
どうすればよいでしょうか。
ボタンの下とかに文字を表示する方法と、MessageBoxを表示する方法も合わせてご教示いただけますと幸いです。

該当のソースコード

html

1Menu.aspx 2<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Menu.aspx.cs" Inherits="Download.Menu" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" %> 3 4<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 6<html xmlns="http://www.w3.org/1999/xhtml" > 7<head id="Head1" runat="server"> 8<base target="_self"/> 9 <title>Download</title> 10</head> 11<body> 12 <form id="form1" runat="server"> 13 <div> 14 <asp:Button ID="btnDownload" runat="server" 15 meta:resourcekey="btnDownloadResource1" OnClick="btnDownload_clicked" 16 Text="Download" /> 17 </div> 18 </form> 19</body> 20</html>

C#

1Menu.aspx.cs 2 protected void btnDownload_clicked(object sender, EventArgs e) 3 { 4 Button btn = (Button)sender; 5 //処理 6 7 btn.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");//for debug 8 }

補足情報(FW/ツールのバージョンなど)

Server:Windows Server 2008 R2 Datacenter Service Pack 1
Local:Windows 10 Pro 1709 OS build 16299.334
Visual Studio 2008 Pro
Making Application:ASP.NET
.NET Framework 3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/04 08:45

Azure 云々と書いてありますが、とりあえず今回の質問についてはローカルの開発マシンの Visual Studio で ASP.NET 開発サーバーで Web アプリを動かしたときのことに限ってよいのですか?(Azure のサーバー上でとか言われても答えは出せないので)
退会済みユーザー

退会済みユーザー

2018/04/04 08:47

あと「ソース中の変数になにがはいっているのか把握する」ということの具体的な目的・意味を教えていただくようお願いします。それを理解しているのといないのとでは、回答が変わってくるかもしれませんので。
caoce

2018/04/05 00:39

今回のプロジェクトはサーバーで動かす前提のクラスライブラリで、ローカルでは動作困難です。ソースを追う限り変数にたとえばpathが入っているらしいのですがそれがfullpathなのかurlなのかを把握したいです。
退会済みユーザー

退会済みユーザー

2018/04/05 01:08

質問にアップしてあるコードは、開発マシン上の Web アプリでは動くが、運用環境の Azure の IIS では動かないということですか?
退会済みユーザー

退会済みユーザー

2018/04/05 01:14

そもそも、その「クラスライブラリ」が Azure の IIS で動くことは確認されているのでしょうか? ワーカープロセスのアカウントの違いで、開発環境では動くものが、運用環境の IIS では動かないということはよくある話です。また、Azure はサービスによってはサンドボックスによる制限もあるそうです。そのあたりは事前にちゃんと確認しているのでしょうか?
sk_3122

2018/04/05 04:52 編集

コメントの「ローカルでは動作困難です」で分かった気がしますが、コードを書くのはローカルで行っているけど、動作確認は Azure に載せてやっている、ということなんでしょうか??? ローカルの IIS では動かないんでしょうか
caoce

2018/04/05 04:58

クラスライブラリなので動作しないのです。
guest

回答1

0

ベストアンサー

btnDownload_clicked() は呼ばれているのでしょうか。
ブレイクポイントを張ったら止まりますか?

この確認によって、まず
「クリック時の処理は呼ばれていて btn.Text を設定しているのに変わらない」のか
「そもそもクリック時の処理が呼ばれていない(ので変わるはずもない)」のかの切り分けをします。

追記

それではとりあえず・・・

Menu.aspx.cs

csharp

1// テスト用のインスタンス変数を用意 2public System.Text.StringBuilder TESTLOG = new System.Text.StringBuilder(); 3 4... 5 6protected void Page_Load(object sender, EventArgs e) 7{ 8 TESTLOG.AppendLine("Page_Load"); // ★TESTLOGにAppendLine()でログを追加していく 9} 10 11protected void btnDownload_clicked(object sender, EventArgs e) 12{ 13 TESTLOG.AppendLine("btnDownload_clicked"); // ★TESTLOGにAppendLine()でログを追加していく 14 15 Button btn = (Button)sender; 16 //処理 17 18 btn.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");//for debug 19}

Menu.aspx

<div style="background:yellow;color:red;"> <%= TESTLOG.ToString().Replace("\n", "<br>") %> </div>

で吐いてみる、でどうでしょう。

投稿2018/04/04 09:07

編集2018/04/05 02:59
sk_3122

総合スコア1126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

caoce

2018/04/05 00:40

今回のプロジェクトはサーバーで動かす前提のクラスライブラリで、ローカルでは動作困難です。そのため、Breakpointを張ることができません。それで困っています。
sk_3122

2018/04/05 03:04

追記しました。 ちなみにローカルで普通に試した限りでは、 Button btn = (Button)sender; btn.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); でボタンの文字列が変わったので、ちゃんと処理が呼ばれていれば 変わるんじゃんないかな?と思いました。参考までに。 (でもソースを見る限り 呼ばれそうな気もするんですけどね・・・ 何が違うのか・・・)
caoce

2018/04/05 04:56

ありがとうございます。これでできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問