Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

ASP.NET

【ASP.NET】compilation要素とhttpRuntime要素のtargetFrameworkプロパティの使い分け

.NET3.5のASP.NETアプリを.NET4.6にアップグレードした。

「わんくま同盟 東京勉強会 #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…