Enviar pesquisa
Carregar
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
•
0 gostou
•
5,540 visualizações
Jun-ichi Sakamoto
Seguir
Community Open Day 2012 北海道会場 セッション2
Leia menos
Leia mais
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 37
Baixar agora
Baixar para ler offline
Recomendados
3D描画基礎知識
3D描画基礎知識
AimingStudy
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
UnityTechnologiesJapan002
6 sinif bsq-1
6 sinif bsq-1
vafa76
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
Unite2017Tokyo
Css types internal, external and inline (1)
Css types internal, external and inline (1)
Webtech Learning
Лр1 вірт машина
Лр1 вірт машина
Пупена Александр
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab
YutoNishine
Editor スクリプティング 入門
Editor スクリプティング 入門
Keigo Ando
Recomendados
3D描画基礎知識
3D描画基礎知識
AimingStudy
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
UnityTechnologiesJapan002
6 sinif bsq-1
6 sinif bsq-1
vafa76
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
Unite2017Tokyo
Css types internal, external and inline (1)
Css types internal, external and inline (1)
Webtech Learning
Лр1 вірт машина
Лр1 вірт машина
Пупена Александр
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab
YutoNishine
Editor スクリプティング 入門
Editor スクリプティング 入門
Keigo Ando
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
CSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSS
Alexei Skachykhin
Unity エディタ拡張
Unity エディタ拡張
Shota Baba
Html ppt
Html ppt
Ruchi Kumari
додаток 1
додаток 1
cdecit
C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688
Nattapong Rodmuang
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
Unreal python
Unreal python
TonyCms
HTML iframe
HTML iframe
raman156413
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
YutoNishine
Що ми знаємо про Веб?
Що ми знаємо про Веб?
kvashukvictoria25pgf
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
Takahiro Miyaura
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
Sugimoto Chizuru
Uputstvo za koriscenje mps2011 v6
Uputstvo za koriscenje mps2011 v6
Akademija Filipovic
Intro to css
Intro to css
Rajashekarkorva
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
Unite2017Tokyo
Lekcia1
Lekcia1
Vasil Hodgev
Introduction to CSS3
Introduction to CSS3
Doris Chen
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
Takayoshi Tanaka
Mais conteúdo relacionado
Mais procurados
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
Daehee Kim
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
Yuki Tamura
CSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSS
Alexei Skachykhin
Unity エディタ拡張
Unity エディタ拡張
Shota Baba
Html ppt
Html ppt
Ruchi Kumari
додаток 1
додаток 1
cdecit
C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688
Nattapong Rodmuang
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
Unreal python
Unreal python
TonyCms
HTML iframe
HTML iframe
raman156413
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
YutoNishine
Що ми знаємо про Веб?
Що ми знаємо про Веб?
kvashukvictoria25pgf
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
Takahiro Miyaura
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
Sugimoto Chizuru
Uputstvo za koriscenje mps2011 v6
Uputstvo za koriscenje mps2011 v6
Akademija Filipovic
Intro to css
Intro to css
Rajashekarkorva
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
Unite2017Tokyo
Lekcia1
Lekcia1
Vasil Hodgev
Introduction to CSS3
Introduction to CSS3
Doris Chen
Mais procurados
(20)
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
CSS Architecture: Writing Maintainable CSS
CSS Architecture: Writing Maintainable CSS
Unity エディタ拡張
Unity エディタ拡張
Html ppt
Html ppt
додаток 1
додаток 1
C Cross Compile for Linkit Smart 7688
C Cross Compile for Linkit Smart 7688
x86とコンテキストスイッチ
x86とコンテキストスイッチ
Unreal python
Unreal python
HTML iframe
HTML iframe
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
Що ми знаємо про Веб?
Що ми знаємо про Веб?
C#で速度を極めるいろは
C#で速度を極めるいろは
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
Mixed Reality Toolkit V2のMixed Reality Scene Systemを使う
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
ゲームの仕様書を書こう3 仕様書に記載するデータと画面
Uputstvo za koriscenje mps2011 v6
Uputstvo za koriscenje mps2011 v6
Intro to css
Intro to css
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
【Unite 2017 Tokyo】Unityを使ったNintendo Switch™ローンチタイトル制作~スーパーボンバーマンRの事例~
Lekcia1
Lekcia1
Introduction to CSS3
Introduction to CSS3
Semelhante a jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
Takayoshi Tanaka
CruiseControl.NET設置
CruiseControl.NET設置
Kuniaki Igarashi
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
20120507 zendform
20120507 zendform
Yusuke Ando
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Takeshi Kondo
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
normalian
Selenium
Selenium
takeuchi-tk
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
yoshinori matsumoto
CLRH_120414_WFTDD
CLRH_120414_WFTDD
Tomoyuki Obi
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2
Tadahiro Higuchi
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
継続的8章
継続的8章
shinjiyoshida
20080524
20080524
小野 修司
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
Oda Shinsuke
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
Naoyuki Yamada
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
lalha
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Kazunori Sakamoto
Semelhante a jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
(20)
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
CruiseControl.NET設置
CruiseControl.NET設置
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
20120507 zendform
20120507 zendform
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
Selenium
Selenium
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
CLRH_120414_WFTDD
CLRH_120414_WFTDD
やってみよう!ASP.NET MVC #2
やってみよう!ASP.NET MVC #2
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
継続的8章
継続的8章
20080524
20080524
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
Selenium webdriver使ってみようず
Selenium webdriver使ってみようず
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Mais de Jun-ichi Sakamoto
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Jun-ichi Sakamoto
Pre-render Blazor WebAssembly on static web hosting at publishing time
Pre-render Blazor WebAssembly on static web hosting at publishing time
Jun-ichi Sakamoto
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
Jun-ichi Sakamoto
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Jun-ichi Sakamoto
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Jun-ichi Sakamoto
C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Jun-ichi Sakamoto
Azure App Service Authentication
Azure App Service Authentication
Jun-ichi Sakamoto
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
Jun-ichi Sakamoto
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Jun-ichi Sakamoto
Ohotech特盛#14 セッション4 予告編
Ohotech特盛#14 セッション4 予告編
Jun-ichi Sakamoto
CLR/H 第99回勉強会ライトニングトーク
CLR/H 第99回勉強会ライトニングトーク
Jun-ichi Sakamoto
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Jun-ichi Sakamoto
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
Jun-ichi Sakamoto
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
Jun-ichi Sakamoto
One horror stories around NuGet
One horror stories around NuGet
Jun-ichi Sakamoto
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Jun-ichi Sakamoto
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
Jun-ichi Sakamoto
セッション中に Twitter につぶやく!
セッション中に Twitter につぶやく!
Jun-ichi Sakamoto
Mais de Jun-ichi Sakamoto
(20)
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
C# で SPA を作る BLAZOR WEBASSEMBLY の進化 - そしてその先へ
Pre-render Blazor WebAssembly on static web hosting at publishing time
Pre-render Blazor WebAssembly on static web hosting at publishing time
WebAssemblyが切り拓くフロントエンドWeb開発の未来
WebAssemblyが切り拓くフロントエンドWeb開発の未来
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
Azure Application Insights + Angular5+ - Global azure boot camp 2019@sapporo LT
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力
Azure App Service Authentication
Azure App Service Authentication
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
ライトニングトーク - とある LINE Bot の開発記「とても腹立たしいことがあったのです」
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
「ゆるくLTをしよう勉強会@旭川」jsakamoto 予告編
Ohotech特盛#14 セッション4 予告編
Ohotech特盛#14 セッション4 予告編
CLR/H 第99回勉強会ライトニングトーク
CLR/H 第99回勉強会ライトニングトーク
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
Ohotech特盛#13 スマホで操作するカメラ付きWi-Fiラジコンカー ― C#とラズパイとWebアプリの技術で作っちゃおう! ―
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
息子たちがローマ字勉強するための <s>HTML5</s> Web標準 アプリ作ってみた
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
More Azure Websites! - JAZUGさっぽろ "きたあず" 第5回勉強会ライトニングトーク
One horror stories around NuGet
One horror stories around NuGet
How to automated test a web application with sending e mail feature
How to automated test a web application with sending e mail feature
Introduction of "MarkdownPresenter"
Introduction of "MarkdownPresenter"
セッション中に Twitter につぶやく!
セッション中に Twitter につぶやく!
Último
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(12)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
1.
jQuery Validation x
ASP.NET MVC で遭遇した不具合 & 対抗ハック @jsakamoto Community Open Day 2012
2.
Twitter Hashtag •
よろしければ、 #clrh71 でお願いいたします。 – #cod2012jp だけだと、全国会場の Tweet と混信しそうなので... – 本セッション中、MiniTwitter にて #clrh71 を含む Tweet をポップ アップします。
3.
jQuery Validation についておさらい •
クライアント側スクリプトによる入力検証機能を提供する JavaScript ライブラリ。 – jQuery のプラグイン • ASP.NET MVC の、標準のクライアント側入力検証エンジンに採用 – MVC3以降 – Visual Studio にて ASP.NET MVC アプリを新規作成すると標準で使用。 • この資料を作成している時点での最新バージョン: – jQuery = v.1.7.2 – jQuery Validation = v.1.9
4.
本セッションのテーマ •
jQuery Validation を使っている上で ”些細な” 不具合にいくつか遭遇 • それら不具合について紹介、どう対策して解決したのかを披露 • 対策はすべて、クライアント側 JavaScript コード上で施工 – 本セッションの本質的な部分では、C# とか ASP.NET とか出てきません。 – プラットフォーム問わず、Web アプリ共通の話題ではないでしょうか? – っていうか、むしろ、Ruby on Rails などなど、他のプラットフォームでは 問題になってないのか? 気になります。
5.
デモ アプリ •
こんな ASP.NET MVC4 な Webアプリを肴に、実演を 交えつつ、進めて参ります。
6.
Case 1.
文字数検証 - input type=“text”
7.
Demo
8.
何が起きてる? •
jQuery Validation は、行頭行末の空白を除いた文字数で チェック – ”期待” とは異なったクライアント側検証。 • サーバー側検証では、行頭行末の空白もそのままに文字 数チェックするのでセーフ。 – ”Post Back” な挙動。 – Webではクライアント側検証に頼らないという鉄則。
9.
対応 •
jQuery Validation の検証メソッドを改変すればいい maxlength: function(value, element, param) { return this.optional(element) || this.getLength($.trim(value), element) <= param; } この trim 要らない!
10.
方法1 - jQuery
Validation のソースを直接変更 • MIT License • でも将来の jQuery Validation 本家のバージョンアップに ついていける?
11.
方法2 – 開発元にフィードバック •
trim しているのは、それはそれで意味があるのでしょう。 • その上でなお、破壊的変更が受け入れられるのか? • 仮に受け入れられるとして、リリースされるまで待てる? – “今そこにある危機”
12.
方法3 – 実行時にOverride •
JavaScript なので、実行時に「書き換え」できます。 $.validator.methods.maxlength = function (value, element, param) { return this.optional(element) || this.getLength(value, element) >= param; };
13.
JavaScript コードの Hack •
いかにも “動的言語” らしく、Hack しやすい。 • しかし Closure が使える...! – 関数型言語っぽい手法で作成されると手が出せない。 • jQuery Validation はそんな実装されてなく良かった... これで学びました。
14.
Case 2.
文字数検証 - textarea
15.
Demo
16.
何が起きてる? •
jQuery Validation は、改行は1文字として文字数チェック。 • サーバー側検証では、改行は2文字として文字数チェック。 – POST データ中、改行が CR+LF になってる – Windows7上で、IE9 でも Firefox12 でも Chrome19 でも同じ挙動 ※以上を Fiddler v.2.3.9.3 で確認。MacOSではどうなんでしょう? • クライアント側とサーバー側とで検証動作が異なる。 – ちなみに、XHR要求だと改行が LF で送信されたり。
17.
対応 •
サーバー側で CR+LF を LF に置換することで対応可能。 • でも、漏れなく実装するのは大変では? • それでは jQuery Validation の実装を変更しましょう。 – オリジナルの $.validator.prototype.getLength(value, element ) が 呼び出される前に、value に含まれる改行文字(LF)を2文字に置換し てオリジナル実装に渡すよう、カスタムコードを ”差し込む”。
18.
実行時に Override
元の実装をorgに確保 var org = $.validator.prototype.getLength; getLength メソッドを 独自実装に差し替え $.validator.prototype.getLength = function (value, element) { LFを適当な value = value.replace(/¥n/g, "++"); 2文字に置換 return org.apply(this, [value, element]); }; 元の実装をapplyで実行
19.
Case 3.
Cancel ボタン
20.
Demo
21.
何が起きてる? •
“cancel” CSSクラスを持つ input か button がクリックさ れると「入力検証しない」のフラグが立つ。 • そしてそのフラグは解除されない。 this .find("input,button") .filter(".cancel") .click(function() { validator.cancelSubmit = true; });
22.
正攻法 – input
で Cancel ボタンを実装しない • a 要素で。 • Twitter Bootstrap など昨今の CSS ライブラリを使えば、a も input も、同じ外観に作れる。
23.
どうしても、という場合... •
「検証しない」フラグをワンショット遅延でオフに復元。 $(".cancel").click(function () { var validator = $(this).closest("form").validate(); setTimeout(function () { validator.cancelSubmit = false; }, 0); });
24.
Case 4.
IE8
25.
Demo
26.
何が起きてる? •
$.validator.elements メソッドの内部に原因 • IE8 だとなぜか、$($(“form”)[0].elements).filter(“:input”) の結果が、要素数 = 0個になっている – IE9 でも、ドキュメントモードが IE8 かそれ以前だと再現
27.
対応 – jQuery
Validation を最新に • この問題を抱えているのは、実は ver.1.8.0.1 まで。 • jQuery Validation を ver.1.8.1 以降に Upgrade で解決。 – ver.1.8.1 のパッケージは 2011年6月10日頃から出現している模様。 – それ以前に作成されたASP.NET MVC3 アプリは注意?
28.
jQuery Validation を最新にできない場合は... •
$.validator.elements の実装を実行時に Override。 • .filter(“:input”) ではなく、.find(“input, select, textarea”) で要素を絞り込む。 $.validator.prototype.elements = function () { ... return $([]) .add(this.currentForm.elements) .find("input, select, textarea") ...; };
29.
Case 5.
CSS Class 名が検証ルール名にかぶった
30.
Demo
31.
何が起きてる? •
ASP.NET としての入力検証機構とは無関係に、jQuery Validation による入力検証機構は活きている • そのひとつ、CSSクラス名による入力検証の発動 – email – required – date – number – ...
32.
jQuery Validation 標準の検証ルールは潰せる •
$.validator.classRuleSettings からCSSクラス名ルールを削除 delete $.validator.classRuleSettings.email;
33.
徒然に
34.
些細なことにこだわってばかりで、 自分が器の小さい人間に思えてきました... だって、結局は、サーバー側検証が機能するんだし...
35.
結局、フィードバックは、Microsoft を含め、 どこにもしていません。 他の仕事とか優先してしまい... どなたか Microsoft
Connect とかに投稿いただません?
36.
Web Forms や、MVC2
までの クライアント側入力検証では、些細とはいえ、 こんな問題はなかったよな... と思ったり。 さすが Microsoft 純正品クォリティ? 今振り返るに、jQuery Validation の採用はどうだったんだろう...
37.
Thank you...
Baixar agora