2015年12月25日金曜日

RangeValidator で日付チェック

ASP.NET の Validator で日付チェックを簡単に行うには、 RangeValidator が便利です。以下のように、「Type="Date" MinimumValue="2000/01/01" MaximumValue="2099/12/31"」と設定してください。 (MinimumValue と MaximumValue は、業務要件によって変更してください。)
<asp:RangeValidator ID="RangeValidatorMain" runat="server"
ControlToValidate="TextBoxMain" Display="Dynamic" Type="Date"
MinimumValue="2000/01/01" MaximumValue="2099/12/31">*</asp:RangeValidator>

年を二桁にしたら、JavaScriptでエラーになった。
年チェックは、4桁でないとNGだった。

旧バージョン (.NET 2で動作する)は、年2桁はOK
.NET バージョン4だと年4桁でないとNGらしい

2015年12月21日月曜日

xamarin.form v2

xamarin.formもversion2になったそうです。

https://xamarin.com/forms

C# + XAML => HTML5 + CSS

HTML5では無く、XAMLを使えたらいいなぁ~と思っていたが
その場合、Xamarin の xamarin.formで構築するとOK。

でも、XAMLを HTML5に変換出来たら、マルチプラットフォーム行けるかなぁ~と
考えたら、同じこと考える人がいた。

http://cshtml5.com/

まだ、ベータ版だが、使ってみる価値はありそう。

PCとモバイル用、2画面ビューを作るなら、html5よりXAMLの用が作りやすい。

最近、ブラウザ依存に嫌気が差してきたから

2015年12月19日土曜日

Fayde Silverlight Everywhere, No Plugins

HTML%で画面設定をするのは悪くないが、どうしても、ブラウザ依存になる。
SilverLight、Flashを期待していたのだが、JavaScriptで XAMLを実装したOSSがあった。

iOS, Androidも、OSと画面のサイズが劇的に増えたので、1つのプロジェクト
マルチプラットフォームはどうしたら、実装出来るか、悩みが増える。

PC、モバイルに2個だけのVIewなら、Faydeを使って試しても良いかも

http://fayde.io/

ASP.NET MVC クッキーを取得・設定する

ASP.NET MVC クッキーを取得・設定する


元ネタ http://miso-soup3.hateblo.jp/entry/2013/12/08/051521

GETでクッキーを取得
POSTでクッキーを設定

上記のサブルーチンさえ作ってしまえば、セッション変数を同じ感じで使える

/// <summary>
  /// キーから、リクエストのクッキーを取得します
  /// </summary>
  /// <param name="key"></param>
  /// <returns></returns>
  private string GetCookieValueByKey(string key)
  {
   HttpCookie cookie = Request.Cookies[key];
   if (cookie == null)
    return null;
   return cookie.Value;
  }

  /// <summary>
  /// レスポンスにクッキーを設定します
  /// </summary>
  /// <param name="key">キー</param>
  /// <param name="value"></param>
  /// <returns></returns>
  private void SetCookie(string key, string value)
  {
   var cookie = new HttpCookie(key);
   cookie.Value = value;
   Response.Cookies.Add(cookie);
  }

2015年12月10日木曜日

specified cast is not valid. c#

実行時に specified cast is not valid. が表示された

原因
よく分からないが多分、linqの数字castがうまくいかなったらしい

金額だったので、ビューの金額を集計する箇所で、項目定義がdecimal(11,2)になっていたのを
CASTで intの属性へ変更した


2015年12月1日火曜日

shift-JIS to utf-8 のファイル変換



元ネタ

http://www.atmarkit.co.jp/fwin2k/win2ktips/1012pschcode/pschcode.html




powershell source
※ファイル:FileConvert.ps1
# スクリプト・ファイルのパラメータを宣言(先頭から「変換対象のフォルダ」
# 「変換後のファイルの保存先」「変換前の文字コード」「変換後の文字コード」)
param(
[String]$in = "c:\tmp\convert",
[String]$out = "c:\tmp\converted",
[String]$from = "Shift-JIS",
[String]$to = "EUC-JP"
)
# 引数$from、$toから、文字コードを表すEncodingオブジェクトを生成
$enc_f = [Text.Encoding]::GetEncoding($from)
$enc_t = [Text.Encoding]::GetEncoding($to)
# 与えられたパス(c:\tmp\convert)から合致するファイルリストを再帰的に取得
Get-ChildItem $in -recurse |
# 取得したファイルを順番に処理
ForEach-Object {
# 取得したオブジェクトがファイルの場合のみ処理(フォルダの場合はスキップ)
if($_.GetType().Name -eq "FileInfo"){
# 変換元ファイルをStreamReaderオブジェクトで読み込み
$reader = New-Object IO.StreamReader($_.FullName, $enc_f)
# 保存先のパス、保存先の親フォルダのパスを生成
$o_path = $_.FullName.ToLower().Replace($in.ToLower(), $out)
$o_folder = Split-Path $o_path -parent
# 保存先のフォルダが存在しない場合にフォルダを自動生成
if(!(Test-Path $o_folder)){
[Void][IO.Directory]::CreateDirectory($o_folder)
}
# 保存先ファイルをStreamWriterオブジェクトでオープン
$writer = New-Object IO.StreamWriter($o_path, $false, $enc_t)
# 変換元ファイルを順に読み込み、保存先ファイルに書き込み
while(!$reader.EndOfStream){$writer.WriteLine($reader.ReadLine())}
# ファイルをすべてクローズ
$reader.Close()
$writer.Close()
}
}