Azure 上で Web.Config を設定する際にハマった

Azure Web.Config
Azure に配置した Web アプリケーションにおいて、アプリ設定から Web.Config の値を上書きすることができます。

Web.Config は " や & などを実体参照(" とか & 等)にエスケープしますが、Azure で設定する際にはエスケープせずにそのまま " や & と記述します。

接続文字列や URL 等でよく設定することなので、Azure に乗せたら動かない、ということが起こってしまいますね…。

[C# 7] int.TryParse の out 変数を省略する

C# 7 の TryParse

C# 7 の TryParse

TryParse 系は使用する前に変数を用意しておかなければならず、ときに無駄な変数を宣言するという微妙なコードになってしまうこともありました。
C# 7 からは第二パラメーターに渡す変数の仕様が少し変更されて便利になりました。

  • out にそのまま変数宣言ができるように
  • _ の登場により TryParse の変換結果がいらない場合でもスマートに書けるように
var s = "0";

// true, 判定だけをしたい
var b = int.TryParse(s, out int _);

// i は宣言されるため、以降の処理で使用可
int.TryParse(s, out int i);
// 1
i = i + 1;

out の後は var でも OK 。

C# 7.0で知っておくべき10の新機能(前編)
http://www.buildinsider.net/language/csharplang/070001

コマンドプロンプトでは Ctrl + V ではなく Alt + Space と E, P

コマンドプロンプトでの貼り付け

コマンドプロンプトの貼り付けショートカットキー

コマンドプロンプトでペーストを行う場合は、Ctrl + V ではなく、Alt + スペースキーでメニューを出した後、E, P と押します。

Selenium Builder と IE11 で UI テスト

Selenium の UI テスト

Selenium による UI テスト

http://www.seleniumhq.org/
Selenium はポピュラーな UI テストツールですが、Firefox のアドオンである「Selenium Builder」を使えば、テストケースをプログラムしなくてもテストケースを作成することができます。

ASP.NET MVC のカスタムエラーページ

エラー画面
ASP.NET で 404 等のエラーが発生した場合、デフォルトで用意されているエラー画面が表示されます。

Web.Config にカスタムエラーページを設定することで、独自のエラーページを表示させることができます。

<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="~/404.html"/>
</customErrors>
</system.web>

カスタムエラーページ
例)404 エラー発生時にルートに配置した 404.html を表示させる。

DateTime.TryParse の out を省略する

C# DateTime.TryParse
TryParse メソッドでは第二パラメーターに対応する変数を out と共に渡さなければなりません。
var s = "2000/01/01 0:00:00";
var d = new DateTime();
DateTime.TryParse(s, out d);
TryParse を判定だけに使いたい時には out を省略したいですが、省略自体はできない仕様です。
しかし、以下の書き方で一行で完結させることができます。
var s = "2000/01/01 0:00:00";
// value は変数名。なんでもいい。
DateTime.TryParse(s, out DateTime value);
ちなみに、int の TryParse ではこの書き方はできません。
C#6.0 の言語仕様策定で却下されたそうです。

【関連記事】

ASP.NET MVC の Razor で Bootstrap Popovers の改行ができない

Bootstrap Popovers の改行ができない
Bootstrap の Popovers で改行をしたいときは、html: true に設定して、改行コード(br タグ)を入れれば改行されます。

ただし、ASP.NET MVC の Razor の値をセットしたい場合は、 @Html.Raw() で、HTML エンコードされていないデータをセットする必要があります。
Razor の値はそのままでは HTML エンコードされて出力されるため、
がそのまま出力されてしまうのです。

ASP.NET MVC での $ is not defined

$ is not defined
$ is not defined とは $ が定義されていないという残念なエラーですが、$ は jQuery の定義です。

ASP.NET MVC では、App_Start 内に Script や CSS をバンドル(まとめる)するための設定を書きますが、これを参照するページ(デフォルトでは _Layout.cshtml)では読み込み順序に気をつけなければいけません。

Script.Renderの記述
内に Style.Render を書いて、
直前に各種 js を書きます。

Bootstrap の Popover に CSS を適用させる

Bootstrap の Popover
Bootstrap の Popover に対して自作の CSS を適用させようとした際に、class 名を設定しても当たらなかったのでメモ。
Popover は JavaScript で生成されるエレメントのため、デフォルトのクラス名で指定する必要があるらしい。

.popover-title {
}
.popover-content {
}