C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ASP MVCのValidation


(過去ログ 153 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■89074 / inTopicNo.1)  ASP MVCのValidation
  
□投稿者/ まるじろう (3回)-(2018/10/30(Tue) 11:33:52)

分類:[ASP.NET (C#)] 

ASP MVCで検証条件を設定したいのですが可能でしょうか。

public class TestModel
{
        [DisplayName("フィールド1")]
        [Required(ErrorMessage = "{0}は必須です。")]
        public string Field1 { get; set; }

        [DisplayName("フィールド2")]
        [Required(ErrorMessage = "{0}は必須です。")]
        public string Field2 { get; set; }
}

例えばボタン1押下時はField1のみ検証し、
ボタン2押下時はField2のみ検証するといった感じです。
Modelを別々に作成するしかないでしょうか。

引用返信 編集キー/
■89075 / inTopicNo.2)  Re[1]: ASP MVCのValidation
□投稿者/ WebSurfer (1632回)-(2018/10/30(Tue) 12:00:56)
No89074 (まるじろう さん) に返信

CustomValidationAttribute を使うことを検討してはいかがですか?

以下のスレッドでの私の提案を見てください。

MVC モデルのバリデーションについて
https://teratail.com/questions/80391

上の記事の FLG に代えてどちらのボタンがクリックされたかの情報を送信できれば
質問者さんがやりたいことは可能だと思います。

引用返信 編集キー/
■89102 / inTopicNo.3)  Re[2]: ASP MVCのValidation
□投稿者/ まるじろう (4回)-(2018/10/31(Wed) 14:58:24)
色々試していて遅くなりました。
ありがとうございます。
無事実装できました。

引用返信 編集キー/
■89104 / inTopicNo.4)  Re[3]: ASP MVCのValidation
□投稿者/ WebSurfer (1639回)-(2018/10/31(Wed) 15:05:22)
No89102 (まるじろう さん) に返信

> 無事実装できました。

可能でしたら、どのように実装したかを書いていただけると、参加者の方々や
後から検索などでここを訪れる人に有用な情報提供になると思います。
引用返信 編集キー/
■89165 / inTopicNo.5)  Re[4]: ASP MVCのValidation
□投稿者/ まるじろう (6回)-(2018/11/02(Fri) 16:39:09)
>可能でしたら、どのように実装したかを書いていただけると、参加者の方々や
>後から検索などでここを訪れる人に有用な情報提供になると思います。 
そうですね

1つ目はご教示頂いたCustomValidationを使う方法です。
    [CustomValidation(typeof(TestModel2), "ValidateSampleModel")]
    public class TestModel2
    {
        public string Flag1 { get; set; }

        public string Field1 { get; set; }

        public string Field2 { get; set; }

        public string Field3 { get; set; }

        public static ValidationResult ValidateSampleModel(TestModel2 model, ValidationContext context)
        {
            // ここで検査を行う。
            if ("1".Equals(model.Flag1))
            { 
                if (String.IsNullOrEmpty(model.Field1))
                {
                    return new ValidationResult("Field1は必須です。");
                }
            } 
            else 
            {
                if (String.IsNullOrEmpty(model.Field2))
                {
                    return new ValidationResult("Field2は必須です。");
                }
            }
            return ValidationResult.Success;
        }
    }


こちらの方法も考えました。
Modelにモデル共通のチェックは定義し、メソッド毎に違うチェックはメソッド毎に記述する。
私的にはこちらの方がシンプルのように思えました。
        public ActionResult Execute1(TestModel2 model)
        {
            // ここで検査を行う。
            if (String.IsNullOrEmpty(model.Field1))
            {
                ModelState.AddModelError("Field1", "Field1は必須です。");
            }
            if (!ModelState.IsValid)
            {
                return View("Index");
            }
            
            return View("Index");
        }


        public ActionResult Execute2(TestModel2 model)
        {

            // ここで検査を行う。
            if (String.IsNullOrEmpty(model.Field2))
            {
                ModelState.AddModelError("Field2", "Field2は必須です。");
            }
            if (!ModelState.IsValid)
            {
                return View("Index");
            }
            
            return View("Index");
        }

引用返信 編集キー/
■89169 / inTopicNo.6)  Re[5]: ASP MVCのValidation
□投稿者/ まるじろう (8回)-(2018/11/02(Fri) 18:05:34)
解決済みとします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -