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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「a.v.v」「iiMK」の...
-
時々処理が呼ばれない
-
ASP.NET 2.0 GridViewの更新ボ...
-
<ASP.NET>DataGridでOnSelected...
-
Response.Redirectで引数2つの...
-
C# try-catch でcatchに飛ばす方法
-
エクセルVBA 宣言Dimの場所
-
C++でSQLServer2008に接続
-
ActiveDirectoryで高い層のOUを...
-
画面のリフレッシュを意図的に...
-
ASP.netで使用するWEBサーバに...
-
VB6でRDOに接続できない
-
oracleを利用できません。(glob...
-
CreateObjectの同時実行時について
-
Outlookで添付ファイルの有無を...
-
エラー内容について
-
ネットワーク上のPCのIPとホス...
-
[PL/SQL]REFCURSORが戻り値のプ...
-
式はメソッドではありませんと...
-
FileCopy時のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページの更新内容が反映されない。
-
隠しフィールドをVBScriptでの...
-
Response.Redirectで引数2つの...
-
GridViewからテンプレートフィ...
-
SqlDataSource SelectCommand ...
-
Tableを動的に増やしたい。
-
「a.v.v」「iiMK」の...
-
ASPでpingを飛ばす事は、可能で...
-
GridView表示の高速化
-
【ASP.NET】 ログインコントロ...
-
ASPからASPを呼び出す方法
-
Panelを重ねる方法
-
asp.net でのドロップダウンリ...
-
時々処理が呼ばれない
-
<ASP.NET>DataGridでOnSelected...
-
ASPへのデータの受け渡しについて
-
ビデオテープに貼るラベルシー...
-
北原化粧品をお使いの方へ
-
UpdatePanel と GridViewについ...
-
javascriptでRadioButton操作
おすすめ情報