
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で定義するところまでは検討がつきました
以上、宜しくお願い致します
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
3.5だとDynamicDataのプロジェクトの中でないとDataAnnotationsによる検証は使えないですね。
4になると参考URLのような方法も使えるように拡張されているんですけどね。
参考URL:http://dotnetfan.org/blogs/dotnetfanblog/archive …
No.1
- 回答日時:
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かと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スイッチが二台あり、別々のア...
-
高校1年生情報の問題について。
-
Windowsで複数のファイルを同じ...
-
グラフをC#のASP.net MVCで表示...
-
vba マージエリアの行数を非表...
-
SJISで、全角文字Aの文字コード...
-
エクセルに張り付けた写真のフ...
-
ffftpでファイル取得が0バイト...
-
【VB.NET】App.configにファイ...
-
aspxをhtmlに変換する方法について
-
指定番号から始まる連番フォル...
-
【VB.NET】Excelの最終行までの...
-
ASP.NetでWebアプリ開発の経験...
-
timeコマンドの結果をテキスト...
-
SPO2測定
-
エクセルのマクロについて教え...
-
インドe-Visa 承認書のApplicat...
-
SPIの非言語の割合と比が難しく...
-
SPIの対策は参考書でやるべきか?
-
LEDで電光掲示板に「A B C D E...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Response.Redirectで引数2つの...
-
隠しフィールドをVBScriptでの...
-
GridView表示の高速化
-
Tableを動的に増やしたい。
-
Panelを重ねる方法
-
ASPでpingを飛ばす事は、可能で...
-
AutoPostBackにしているが、う...
-
<ASP.NET>DataGridでOnSelected...
-
ASP.NET 2.0 GridViewの更新ボ...
-
複数フレームの同時処理
-
ASPからASPを呼び出す方法
-
SqlDataSource SelectCommand ...
-
ページを一度更新しないとSessi...
-
クリッカブルマップを利用したA...
-
ページの更新内容が反映されない。
-
GridViewからテンプレートフィ...
-
ネットワーク上のPCのIPとホス...
-
C# try-catch でcatchに飛ばす方法
-
ASPプログラミングでADODB.C...
-
エクセルVBA 宣言Dimの場所
おすすめ情報