- 締切済み
ASP.NET web アプリケーションでの入力検証に関して質問です
ASP.NET web アプリケーションでの入力検証に関して質問です 当方.NET、オブジェクト指向言語初心者です 検討違いなことを質問しているかもしれませんが 回答いただけたら幸いです 以下を使用しています visual studio 2008 .NET Framework 3.5 C# 新規プロジェクト作成時に ASP.NET web アプリケーションを選択し、 (ASP.NET MVC等ではなく) TextBox Button を配置し Buttonを押下した時に TextBoxに何も入力されていなかった場合 エラーメッセージを表示するような入力検証を System.ComponentModel.DataAnnotations を用いて行いたいと考えています (RequiredFieldValidatorではなく) Q1 新規プロジェクト作成時にASP.NET web アプリケーションを選択した場合 System.ComponentModel.DataAnnotations を用いて入力検証はおこなえるのでしょうか? (webで検索したところASP.NET MVCやSilverlightのサンプルはあったのですが・・・) Q2 Q1がYESの場合 具体的にはどう実装すればよいのでしょうか? 以下にソースを記載します ■Defaoult.Aspx <%@ Page Title="ホーム ページ" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> </asp:Content> ■Default.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel.DataAnnotations; //←※ namespace WebApplication2 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { } } } ※ 参照の追加で System.ComponentModel.DataAnnotations を追加して usingで定義するところまでは検討がつきました 以上、宜しくお願い致します
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- onos
- ベストアンサー率81% (127/155)
3.5だとDynamicDataのプロジェクトの中でないとDataAnnotationsによる検証は使えないですね。 4になると参考URLのような方法も使えるように拡張されているんですけどね。
- aspnet
- ベストアンサー率79% (72/91)
System.ComponentModel.DataAnnotationsは、ASP.NET WebApplication/WebSiteでは(ほぼ)使えません。 たしかEntity Frameworkと同時に実装されたコンポーンネントで、エンティティオブジェクトを使ったリアルタイム値検証に用いられ、WindowsFormやWPF、SylverlightRuntimeでも、3から?実装されたと思います。 ASP.NET WebFormやWebSiteでは、入力値を自動供給する「モデルバインダ」の概念がなくPostBackやViewState、サーバ/クライアント検証(JavaScript)という仕組み、検証結果の通知など全部が特殊なので、そのままでは使用できません。 その周辺を全部自分で実装する(ASP.NET複雑すぎ。。自分には無理)か、海外のフレームワーク探すか、諦めてMVC使う必要があります。 ASP.NET MVC1になってWebベースの「モデルバインダ」が実装されたため、新しいSystem.ComponentModel.DataAnnotationsがオプションで出て、MVC2になってようやく完成形として標準実装なったんですね。 ASP.NET MVCではフォーム入力値を自動で「エンティティオブジェクト」に格納する仕組み(モデルバインダ)があるため、受け側のメンバの属性を付加したクラスに叩き込み、自動で検証結果をサーバサイド、クライアントサイドに表示することができます。 (自分でカスタム検証追加もOK) このあたりの仕組みはJAVAやRubyのフレームワークも全く同じです。 やっぱ時代はMVCかと。