問題タブ [ivalidatableobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
55 参照

asp.net - Service メソッドの記述と Ivalidatable オブジェクトの記述

私はasp.net mvc Webアプリケーションに取り組んでおり、ユーザーがすでに存在するIPおよび/またはMacアドレスを入力したかどうかを確認する必要があります。現在、POST の Create & Edit アクション メソッド内に次のサービス メソッドを次のように記述して、これを確認しています。

レコードを追加または編集する前に一意性をチェックしたい場合は、ユーザーがこれをチェックしsj.IsIPUnique ますsj.IsMACUnique。チェック ボックスをオフのままにしておくと、一意性の検証は行われません。

しかし、コードをそのままにしておく必要がありますか?それとも、サービス メソッドを使用する代わりに、検証可能なオブジェクト内でこの一意性チェックを行う方がよいでしょうか?

0 投票する
2 に答える
2257 参照

asp.net - 別のフィールドが null でない場合に Require 検証を実装する最良の方法

ビュー内に次の 2 つのフィールドがあります。

実装したいルールは、両方のフィールドが NullAble であるということですが、ユーザーが ConsoleServerID を選択した場合は、 Port を追加する必要があります。また、ユーザーが ConsoleServerID をヌルのままにした場合、ポート番号を入力するべきではありません。では、クライアント側とサーバー側の両方の検証を行うために、このシナリオを実装する最良の方法は何ですか? ありがとう

編集 フールプルーフをインストールした後、次の問題に直面しています:-

  1. クライアント側の検証は実装されておらず、コントローラークラス内でモデルの状態が有効かどうかを確認するときに検証が実装されています

  2. [RequiredIfNotEmpty] が false の場合、ユーザーは次のメッセージを受け取ります。

  3. ユーザーが ConsoleServerID が null のフォームを送信しようとすると、次の例外が発生します。

System.Data.Entity.Validation.DbUnexpectedValidationException はユーザー コードによって処理されませんでした。詳細については、内部例外を参照してください。ソース = EntityFramework StackTrace: System.Data.Entity.Internal.Validation.ValidationAttributeValidator.Validate (EntityValidationContext entityValidationContext、InternalMemberEntry プロパティ) で System.Data.Entity.Internal.Validation.PropertyValidator.Validate (EntityValidationContext entityValidationContext、InternalMemberEntry プロパティ) で System. Data.Entity.Internal.Validation.EntityValidator.ValidateProperties(EntityValidationContext entityValidationContext, InternalPropertyEntry parentProperty, List1 validationErrors) at System.Data.Entity.Internal.Validation.TypeValidator.Validate(EntityValidationContext entityValidationContext, InternalPropertyEntry property) at System.Data.Entity.Internal.Validation.EntityValidator.Validate(EntityValidationContext entityValidationContext) at System.Data.Entity.Internal.InternalEntityEntry.GetValidationResult(IDictionary2 項目) System.Data.Entity.DbContext.ValidateEntity(DbEntityEntry entityEntry、IDictionary 2 items) at System.Data.Entity.DbContext.GetValidationErrors() at System.Data.Entity.Internal.InternalContext.SaveChanges() at System.Data.Entity.Internal.LazyInternalContext.SaveChanges() at System.Data.Entity.DbContext.SaveChanges() at TMS.Models.Repository.Save() in c:\Users\Administrator\Desktop\New folder (19)\TMS\TMS\TMS\Models\Repository.cs:line 4614 at TMS.Controllers.FirewallController.Edit(FirewallJoin fj, FormCollection formValues) in c:\Users\Administrator\Desktop\New folder (19)\TMS\TMS\TMS\Controllers\FirewallController.cs:line 869 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 つのパラメーター) で System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext、ActionDescriptor actionDescriptor、IDictionary)2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass81.b__7(IAsyncResult _) System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() で System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) で System.Web.Mvc.Async. AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49() InnerException: System.NotImplementedException HResult=-2147467263 Message=メソッドまたは操作が実装されていません。ソース = MVC フールプルーフ検証 StackTrace: Foolproof.ModelAwareValidationAttribute.IsValid(オブジェクト値) で System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(オブジェクト値、

0 投票する
1 に答える
727 参照

c# - IValidatableObject を使用して POCO から拡張された ViewModel を検証する

Userクラスを想像してみてください。このクラスは、データベースで使用される唯一のプロパティを提供します。

Userそして、バリデーターを持つクラスのビューモデル

意見

コントローラ

問題

属性を介して指定されたすべての検証が正常に実行され、すべてのエラーがビューに正常に表示されます。しかし、検証はIValidatableObject機能せず、エラーは表示されません。

0 投票する
1 に答える
3888 参照

validation - Controller.ValidateModel メソッド。それがどのように働きますか?

私は次のモデルクラスを持っています:

次のようなものを使用して「クラシック」で正常に動作します。

しかし、このモデル クラスを別の ajax フォームにも使用したいと考えています。私は次の方法を持っています:

見る

ライン。モデルが正しければ、問題なく動作します。正しくない場合 - 例外をスローし、メソッドの継続実行を中断します (そしてビューに例外を返します)。また、ブレークポイントを設定すると

メソッド、無効なモデルの場合に呼び出されることはありません! (有効なモデルで Validate メソッドが呼び出されます)。「クラシック」メソッドのような動作が必要で、モデルを検証してから ModelState.IsValid を検証します。ValidateModel(model) の動作は私にとって非常に奇妙で、「ブラック ボックス」です...

0 投票する
1 に答える
1720 参照

c# - C# Web API - IValidatableObject validationContext サービス プロバイダーが null です

IValidatableObjectWeb API 2 コンテキストで検証を使用しようとしています。Validateメソッドが呼び出されていますが、ValidationContext渡されたパラメーターにはGetService常に null を返すメソッドが呼び出されています。これは、検証コンテキストのサービス プロバイダーが設定されていないためです。

私のすべての調査から、MVC フレームワークでこれを簡単に構成できますが、web api 2 で構成する方法については何も見つかりませんでした。

に渡されたモデルを検証するときに、サービス プロバイダーを検証コンテキストに設定するにはどうすればよいApiControllerでしょうか。