- ○HTMLヘルパーを使ってフォームのコントロールを出力するときにIDの文字列を渡す必要がなくなった
- 今までは
- <%= Html.TextBox(“ProductName”, model.ProductName) %>
と書いて
<input id=”ProductName” name=”ProductName” type=”text” value=”xxxxxx” />
のように出力していたが、下記のようにIDの文字列を渡す必要がなくなった。
<%= Html.TextBoxFor(model => model.ProductName) %> - ○モデルクラスのプロパティにAttributeをつけることによってバリデーションをサーバ、クライアントの双方でできるようになった
- System.ComponentModel.DataAnnotations名前空間下にある下記のAttributeが使用可能。
- [Required]、[StringLength]、[Range]、[RegularExpression]
- 以下使用例。
- [Required(ErrorMessage = "名前を入力してください。")]
[StringLength(50, ErrorMessage = "50文字以内です。")]
[Range(0, 120, ErrorMessage = "入力できる数字は0から120までです。")]
[ReqularExpression("^[0-9]{3}-?[0-9]{4}$”, ErrorMessage = “”] - クライアントでもチェックできるようにするにはViewに
<script src=”Scripts/MicrosoftAjax.js” type=”text/javascript></script>
<script src=”Scripts/MicrosoftMvcValidation.js” type=”text/javascript></script><% Html.EnableClientValidation(); %>
- の3行を追加する。
- ADO.Net Entity Frameworkのようにツールで自動生成するモデルを使っている場合は、
自動生成時に属性がなくならないように下記のようにする。 - まずPartialクラスのファイルにMetadataType属性を追加する。
-
[[MetadataType(typeof(PersonMetadata))]
public partial class Person
{
} - 次にメタデータクラスを追加して、プロパティに対してバリデーションを設定する。
-
[Bind(Exclude="ID")]
public class PersonMetadata
{
[Required(ErrorMessage = "名前を入力してください。")]
public string Name { get; set; }
} -
ValidationAttributeクラスを継承したクラスを作ることによって、独自の検証属性を作ることも可能。
- ○Actionメソッドでデフォルト値を使えるようになった。
- {controller}/{action}/{id}
のようなUrlの時に、 - ○非同期コントローラのサポート
- 非同期コントローラを使うことで負荷の高いサイトでサーバがスレッドプールを使い果たしてしまうのを防げる。
public ActionResult View(int id, [DefaultValue(1)]int page) {
}
のような使い方が可能。
参考サイト
http://www.asp.net/learn/whitepapers/what-is-new-in-aspnet-mvc/
http://www.atmarkit.co.jp/fdotnet/scottgublog/20100113aspnetmvc2/aspnetmvc2.html
Last 5 posts in .Net Framework
- 同一サーバーへの同時接続数を構成ファイルで設定するには - May 23rd, 2012
- VSTO セットアッププログラムからインストールしたAddinのApp.configが読み込まれない場合 - May 7th, 2012
- CanExecuteのTrue,Falseを変更してもコマンド実行の可否がGUIに反映されない場合には - April 12th, 2011