読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

「わんくま同盟 東京勉強会 #90」に行ってきた(その2「ASP.NETで株価チャートを作る」by XENOさん)

6/7に「わんくま同盟 東京勉強会 #90」に行ってきました。途中で帰らなければならなかったので、全部のセッションは聞けなかったのですが、2回に分けて勉強会の内容を紹介します。 わんくま同盟先月はゴールデンウィークいかがでしたか? 今回はスピーカー…

「第一回 knockoutjsハンズオン」に行ってきた(その2「ASP.NETの変遷とKnockout.js」by 日本マイクロソフト松崎剛さん)

5/17に、「第一回 knockoutjsハンズオン」に行ってきたので、6回に分けて勉強会の内容を紹介します。 初心者向けJavaScript入門からテラ・コーティングまで!JavaScriptフレームワークの主流、MVVMアーキテクチャパターンを採用しているknockoutjsを堪能す…

Web.configの先頭に改行があると500内部サーバーエラーが発生する

どういうこと? Web.configの先頭に改行があると、500内部サーバーエラーが発生します。 XMLの仕様で、先頭の改行を許可していないからです。 最初の行はXML宣言です。使用するXMLバージョン(1.0)と エンコーディング(ISO-8859-1 = Latin-1/West European …

【ASP.NET】Postback時にチェックボックスの状態を変更しようとすると「'length' は Null またはオブジェクトではありません。」のエラーが発生する

ASP.NETで、Postback時にチェックボックスの状態を変更しようとすると「'length' は Null またはオブジェクトではありません。」というエラーが発生しました。(チェックボックスがかなり多い画面です) 原因がわかったので、トラブルシュートの経緯を書き残…

イベントハンドラはprotectedにしないとマークアップからは参照できない

イベントハンドラはprotectedにしないとマークアップのクラスからは参照できません。 ButttonコントロールのClickイベントを例として説明します。 どういうこと? ビハインドコードにイベントハンドラ(Button_Click)を作成し、アクセス修飾子をprivateまた…

Evalの戻り値をメソッドの引数にする場合は明示的にキャストしなければならない

Evalの戻り値をビハインドコードのメソッドの引数にしたいことがあります。 例えば、以下のようなメソッドをマークアップから呼び出す場合です。 /// <summary> /// コードから表示文字列を取得します。 /// </summary> /// <param name="value">コード。</param> /// <returns>変換された文字列。</returns> protected string C…

Response.Endを呼び出すと必ずThreadAbortExceptionが発生する

こんなバグがありました。 protected new void Page_Load(object sender, EventArgs e) { try { /* * HttpResponse.TransmitFileでファイルの内容を応答に書き込む処理 */ Response.End(); } catch (Exception){ Response.Clear(); Response.StatusCode = 50…

セッション状態値の存在チェックを拡張メソッドで実装する

セッション状態値の存在チェックを拡張メソッドで実装します。 ソースコード using System; using System.Web.SessionState; namespace Extensions { public static class SystemWebSessionStateExtensions { /// <summary> /// 指定されたセッション状態値が存在する</summary>…

Repeaterコントロール内に配置したコントロールのイベントをハンドリングする

Repeaterコントロール内に配置したコントロールのイベントをハンドリングする際の注意点です。 ここでは例としてRepeaterコントロール内部にButtonを配置しています。 ソースコード aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default…

ポストバック後もスクロール位置を保持する

どういうこと? 縦に長いページの場合、ポストバック後のスクロール位置の保持が有効です。 どうして? ポストバック後に、再度スクロールを強いるのはユーザーフレンドリーではありません。 どうすれば? Pageディレクティブで「MaintainScrollPositionOnPo…

ASP.NET Ajax クライアント側フレームワークを読み込めませんでした

どういうこと? ASP.NETでAjaxを使ったアプリを開発していたら、突然エラーが発生するようになった。 "ASP.NET Ajax クライアント側フレームワークを読み込めませんでした。" "'Sys'は宣言されていません。" どうして? エラーメッセージから、Ajax Library…

~(チルダ)で始まるパスを絶対パスに変換する

どういうこと? ASP.NETではチルダでアプリケーションルートを表すことができます。これはあくまでもASP.NETの仕様なので、 <img src="~Hoge/Fuga/image.jpg" /> こんな風に書いても画像を参照できません。 どうすれば? System.Web.VirtualPathUtility.ToAbsolute メソッドで、チルダで始まる…

ExcelファイルをHTMLファイルに変換できるライブラリを探しています

MSDNフォーラムに質問を投稿しました。 ExcelファイルをHTMLファイルに変換できるライブラリを探しています 情報をお持ちの方、回答よろしくお願いします。

セッション値の存在確認メソッドを拡張メソッドで定義する

セッション値の存在確認メソッドを拡張メソッドで定義します。 どうして? 毎回nullチェックをすると煩雑なコードになる。 セッション値が存在しないときはnullを返すという仕様を記憶していなければならない。 拡張メソッドを使えば糖衣構文を用意すること…

拡張メソッドでRepeaterコントロールのRepeaterItemを型指定されたDataRowに変換する

拡張メソッドでRepeaterコントロールのRepeaterItemを型指定されたDataRowに変換します。 どういうこと? 型指定されたDataTableをRepeaterコントロールのDataSourceにバインドする場合、RepeaterItemを型指定されたDataRowに変換する拡張メソッドを定義する…

Session値を取得と同時に削除するメソッドを拡張メソッドで実装する その2

以下のエントリーを改良してみます。 Session値を取得と同時に削除するメソッドを拡張メソッドで実装する - プログラマーな日々Session値を一時的なデーター渡しに使う場合、値を取得直後に削除したい場合があります。でもSystem.Web.SessionState.HttpSessi…

Session値を取得と同時に削除するメソッドを拡張メソッドで実装する

どういうこと? Session値を一時的なデーター渡しに使う場合、値を取得直後に削除したい場合があります。でもSystem.Web.SessionState.HttpSessionStateクラスにはそのようなメソッドは用意されていません。そこで拡張メソッドを使い実装してみます。 どうす…

RequiredFieldValidatorで初期値から変更されているか否かを検出する

どういうこと? RequiredFieldValidatorを使うと、初期値から変更されていない場合を入力エラーとして検出できます。 どうすれば? InitialValue プロパティに初期値を設定しておきます。デフォルト値はString.Emptyです。RequiredFieldValidatorは入力値と…

ビハインドコードのメソッドは、protectedにしないとaspxからは参照できない

ビハインドコードのメソッドは、protectedにしないとaspxのサーバーサイドロジックからは参照できません。 どういうこと? ビハインドコードにメソッドを作成し、アクセス修飾子をprivateまたはinternalにします。 aspxのに作成したメソッドを参照するコード…

ObjectDataSourceにはDataTableを双方向でデータバインドできない

ObjectDataSourceにはDataTableを双方向でデータバインドできません。 どういうこと? 以下のサンプルで説明します。 Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>

internalなビジネスオブジェクトをObjectDataSourceは認識できない

internalなビジネスオブジェクトをObjectDataSourceは認識できません。 どういうこと? 以下のようなinternalなクラスを宣言し、ビルドします。 namespace WebApplication1 { internal class Biz { public void Hoge() { } } } 次に、ObjectDataSourceを配置…

ObjectDataSourceの[データソースの構成]ウィザードにビジネスオブジェクトが表示されない

ObjectDataSourceの[データソースの構成]ウィザードは、デフォルトではTableAdapterしかコンボボックスに表示されません。 他のビジネスオブジェクトを選択したい場合は、[データコンポーネントのみを表示]のチェックボックスを外すとコンボボックスに表示さ…

DataSourceをバインドしたGridViewでコードを文言で表示する

DataSourceをバインドしたGridViewでコードを文言で表示する方法を紹介します。ここでは、hogeが1のときを"Foo"、2のときを"Bar"で表示するものとして説明します。 ソースコード aspx aspxのソースコードにテンプレートフィールドを記述します。 <asp:TemplateField HeaderText="ほげ"> <ItemTemplate> </itemtemplate></asp:templatefield>

ObjectDataSource 'ObjectDataSource1' の DataObjectTypeName プロパティによって指定された型上の 'hoge' というプロパティが見つかりませんでした

ObjectDataSourceではまりました。 環境 Visual Studio 2008 SP1, .NET Framework 3.5 問題 オブジェクトをObjectDataSourceにバインドさせたら、以下の例外が発生しました。 ObjectDataSource 'ObjectDataSource1' の DataObjectTypeName プロパティによっ…

Webアプリケーションのインストーラーを作成する

「ASP.NET Webアプリケーション」プロジェクトであれば、Windowsアプリケーションと同じ要領でインストーラーが作成できます。(「Webサイト」の場合は未確認です)検証は、Visual Studio 2008 SP1、.NET Framework 3.5で行いました。(2011/08/25追記) サ…

GridViewで同じ値のセルを結合する方法

サンプル 方法 Group cells in ASP.NET GridView (CSASPNETGroupedGridView) in C# for Visual Studio 2010The ASP.NET code sample shows how to group cells in GridView with the same value.

ASP.NET Dynamic Dataサイトをカスタマイズする方法

ASP.NET Dynamic Dataは、DBMSのメタデータを読み取り、サイトのソースコードを自動生成する技術です。 何もカスタマイズしない状態でここまで実現できます 複数レコードの一覧表示 1レコードの明細表示 CRUD 列名クリックでのソート ページング 1ページに…

SQL Server以外のDBMSにセッション情報を格納する

SQL Server以外のDBMSにセッション情報を格納する方法を紹介します。(未検証 です)セッション状態モードASP.NET セッション状態は、セッション データのさまざまなストレージ オプションをサポートします。各オプションは、SessionStateMode 列挙型の値で…

AJAX Control Toolkit の July 2011 Release が公開されています

AJAX Control Toolkit の July 2011 Release が公開されています。AJAX Control Toolkit - Download: July 2011 Release 「What's New?」の駄訳 「Ajax Control Toolkit」のこのリリースは、いくつかの重要なバグがFixされ、新しい「HTML Editor Extender Co…

ASP.NET における認証方式決定フローチャート

ASP.NET における認証 : .NET セキュリティ ガイド付録 A のフロー チャートを使って、個々のアプリケーションの要件に応じた最適な認証方式を決定することができます。このチャートを使用するには、ユーザー ベースと導入モデルの性質に関する質問に答えて…

GridViewをObjectDataSourceを介してTableAdapterにバインドする

アプリ実行 手順 [App_Code]フォルダを作成する。 [App_Code]フォルダで[新規作成] - [DataSet]を選択する。 DataSetのデザイナを開き、サーバーエクスプローラーからテーブルをドロップして、TableAdapterを作成する。 ビルドする。※ビルドしないとObjectDa…

GridViewに行選択機能を実装する

アプリ実行 起動 [選択]をクリック 手順 デザイナの[GridViewタスク] - [列の編集]をクリックする。 [選択]フィールドを追加する。 選択した行のスタイルを設定する。

GridViewでソート機能を実装する

アプリ実行 起動 [名前]列をクリック 手順 AllowSortingプロパティをtrueにする。 デザイナの[GridViewタスク] - [列の編集]をクリックする。 各列のSortExpressionにソート対象とする列名を設定する。 注意 ソートを実行するたびに全件のSELECTが発生します…

GridViewでページング機能を実装する

アプリ実行 起動 ページ[2]をクリック デザイナ GridView 注意 ページャークリックのたびに、1ページのデータだけでなく全件のSELECTが発生します。

カスタムバインド式をビハインドコードに移動する

前回(以下のエントリー)契約列のカスタムバインド式が複雑になってしまったので、ビハインドコードに移動させます。 TemplateFieldでGridViewの列をカスタマイズする - プログラマーな日々 ソースコード HelloWorld.aspx <%@ Page Language="C#" AutoEvent…

TemplateFieldでGridViewの列をカスタマイズする

アプリ実行 手順 デザイナの[GridViewタスク] - [列の編集]をクリックする。 TemplateFieldを追加、または[このフィールドをTemplateFieldに変換します。]をクリックし、[OK]ボタンをクリックする。 [GridViewタスク] - [テンプレートの編集]をクリックする…

AppendDataBoundItemsプロパティで任意の項目をListBoxに追加する

アプリ実行 手順 ListBoxのAppendDataBoundItemsプロパティをtrueにする。 [ListBoxタスク]の[項目の編集]をクリックする。 項目を追加し、[OK]ボタンをクリックする。 参考 Microsoft Visual Studio 2005によるWebアプリケーション構築技法 P.222より引用 …

単純データバインド

DataBindメソッドを実行したタイミングで式が評価され、結果の値がその場所に代入されます。 アプリ実行 ソースコード web.config <configuration> <system.web> </system.web> </configuration> HelloWorld.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="HelloWorld.aspx.cs" Inherits="HelloWorld…

SQL Serverのmdfファイルをプロジェクトに追加する

SQL Serverから切り離されているmdfファイルをVisual Studioのプロジェクトに組み込み、読み書きすることができます。 この機能はVisual Studioと共にインストールされるSQL Server Expressを使用しています。サーバーエクスプローラーで接続することもでき…

カスタムエラーページを表示する

アプリ実行 内部サーバーエラー ファイルが存在しない その他のエラー ソースコード web.config <configuration> <system.web> <compilation debug="true" targetFramework="4.0"/> <customErrors defaultRedirect="GenericError.htm" mode="On"> <error statusCode="500" redirect="InternalServerError.htm" /> </error></customerrors></compilation></system.web></configuration>

トレースデータをVisual Studioの[出力]ウィンドウに出力する

web.configの設定でwriteToDiagnosticsTrace属性をtrueにしておくと、Visual Studioの[出力]ウィンドウにトレースデータが出力されます。 Visual Studioでデバッグ実行 [出力]ウィンドウ ソースコード 以下のエントリーと同じです。 アプリケーション内でト…

アプリケーション内で取得されたトレースデータを一覧表示する

アプリ実行 trace.axdからのレスポンス [詳細の表示]をクリック ソースコード 前回(以下のエントリー)と同じです。 アプリケーション内でトレースデータを出力する - プログラマーな日々

アプリケーション内でトレースデータを出力する

アプリ実行 ソースコード web.config <configuration> <system.web> <compilation debug="true" targetFramework="4.0"/> <trace enabled="true" requestLimit="100" mostRecent="true" pageOutput="true" writeToDiagnosticsTrace="true" localOnly="true"/> </system.web> </configuration> helloworld.aspx <…

マイクロソフトの無償のWeb開発環境がまた1つ増えた

マイクロソフトが無償のWeb開発環境「WebMatrix」をリリースしました。 WebMatrix 3WebMatrix is a free, lightweight, cloud-connected web development tool Create, publish, and maintain your website with ease ...ネタ元: マイクロソフト、無償のWeb…

ASP.NETエントリのまとめ

ASP.NET関連のエントリをこのページにまとめます。エントリするたびに随時更新します。 トレース ASP.NETのイベント呼び出しをトレースする - プログラマーな日々 アプリケーション内でトレースデータを出力する - プログラマーな日々(2011/02/16追記) ア…

実装漏れが発生しやすいIsValidのバグ

目次 マークアップ ビハインドコード サーバーサイドのエラー検出処理の検証 まとめ サーバーサイドのIsValidのチェックは必須ですが、実装漏れが起こりがちです。クライアントサイドのチェックが機能していれば実装漏れが露見しないからです。以上をアプリ…

検証結果のサマリーを表示する

全てのコントロールの検証結果を詳細なメッセージで表示するには、ValidationSummaryクラスを使用します。 デザイナ マークアップ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ValidatorSummary.aspx.cs" Inherits="Validator_P85" %>

必須入力を検証する

ASP.NETで必須入力を検証するには、RequiredFieldValidator クラスを使用します。 デザイナ マークアップ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Validator.aspx.cs" Inherits="Validator_P85" %>

検証コントロールの表示位置を動的に調整する

ASP.NETのエントリは「プログラミングMicrosoft ASP.NET 3.5」を元に進めていく予定でしたが、挫折しました... 先に赤間本から学びたいと思います。プログラミングMS ASP.NET3.5 (マイクロソフト公式解説書 Microsoft Visual Studi)posted with ヨメレバDino…

ASP.NETのイベント呼び出しをトレースする

Web.configに以下の設定を追加する <system.web> <trace enabled="true" requestLimit="100" mostRecent="true" pageOutput="true" writeToDiagnosticsTrace="true" localOnly="true"/> </system.web> リクエストを発行する ページをリクエストすると、イベント呼び出しがトレースされます。 参考 ASP.NET トレースの概要ASP.NET トレースを使用すると、ASP.NET ページの単一の要求に関する診断情報を表示できます。 ASP…