2017-06-19 6 views
0

私はXamarin.Formアプリケーションを使用しており、内部モデルの検証のためにモデル状態のASP.Net Web WebAPIを使用しています。私は私のAPIは、このJSONオブジェクトを返す「不正な要求」だ場合:だからXamarinフォームの検証とASP.Net WebAPI

{ 
    message: 'The request is invalid.', 
    modelState: { 
     model.**Name**: [ 
      "The name is empty" 
     ] 
    } 
    } 

を、私はその結果を読み取るためにUIに私の仕事を簡素化したい、私の質問は:どのように私は、このオブジェクトを使用するために行うことができます私のUIにエラーを表示するには?またはXamarinフォームにASP.NET MVC Validatorのようなヘルパーがあります@ Html.ValidationMessageFor(model => model.Name)、UIにエラーが自動的に表示される可能性がありますか?

ありがとうございます!

答えて

1

あなたは次のようにコントロールの動作を作成することができます1

public class EmailValidatorBehavior : Behavior<Entry> 
    { 
     const string emailRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + 
      @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 


     protected override void OnAttachedTo(Entry bindable) 
     { 
      bindable.TextChanged += HandleTextChanged; 
      base.OnAttachedTo(bindable); 
     } 

     void HandleTextChanged(object sender, TextChangedEventArgs e) 
     { 
      bool IsValid = false; 
      IsValid = (Regex.IsMatch(e.NewTextValue, emailRegex, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250))); 
      ((Entry)sender).TextColor = IsValid ? Color.Default : Color.Red; 
     } 

     protected override void OnDetachingFrom(Entry bindable) 
     { 
      bindable.TextChanged -= HandleTextChanged; 
      base.OnDetachingFrom(bindable); 
     } 
    } 

使用エントリ

に行動を追加し、あなたの行動

xmlns:local="clr-namespace:Mynamespace.Behaviors" 

をするために名前空間を追加し

以下のようにXAMLでこの動作以下

<Entry x:Name="txtEmail" Placeholder="Enter Your Password" > 
     <Entry.Behaviors> 
     <local:EmailValidatorBehavior /> 
     </Entry.Behaviors> 
    </Entry> 

上記の動作は、電子メールが有効でない場合は電子メールを検証し、テキストボックスの色を赤色に変更します。このように、より多くの行動を作成することができます

+0

この詳細については、私に連絡してください。 XAMLはどうですか? –

+0

ありがとうございました!しかし、私はすべてのモデルを持つPLCを持っていることを意味します、私はすべてのモデルのプロパティのために、私はWeb APIの検証のためのデータ表記を持っています。 Xamarin Formでこれらのバリデーションをどのモデルでも使用するにはどうすればいいのですか?[こちらを参照](https://msdn.microsoft.com/en-us/library/ee256141(v=v2/98).aspx) –

関連する問題