2

こんにちは、コントローラーにメソッドがあり、次のコードがあります

if (ModelState.IsValid)

{

    IDataOperations ops = DataSession.GetDataOperations(null);
    List<Department> dept = new List<Department>();
    ops.Load(dept);
    ops.Commit();
    int deptId = dept[dept.Count - 1].Id + 1;
    Department department = new Department()
    {
      Id = deptId,
      CompanyId = deptModel.CompanyId,
      Active = deptModel.Active,
      Name = deptModel.Name
    };

    ops.Create(department);
    ops.Commit();
    return RedirectToAction("CompanyDepartment", "Task");
}

else

{
  //some code

ページが実行されるたびに、常に else 部分に移動します。つまり、モデル状態が無効です。ページのどこにエラーがあるかを確認するにはどうすればよいですか。ページのどこにエラーがあるかを示すために追加できるコードは何ですか。

ありがとうございました

4

6 に答える 6

3

次のコードで modelstate コレクションを調べることができます。これをデバッグすることで、コードが for ループに入ることがわかり、何がエラーであったかを理解できます。

#if DEBUG
       /// <summary> 
 /// Output the properties which are causing the issues when 
 /// the model is binding. 
 /// </summary>
  public static void ModelStateErrors (ModelStateDictionary modelState)
        {
            var errors = modelState.Where(a => a.Value.Errors.Count > 0)
                .Select(b => new { b.Key, b.Value.Errors })
                .ToArray();

            foreach (var modelStateErrors in errors)
            {
                 System.Diagnostics.Debug.WriteLine("...Errored When Binding.",                                  modelStateErrors.Key.ToString());

            }

        }
#endif
于 2012-07-09T12:52:11.323 に答える
1

ビューに表示されていないモデルのフィールドに問題がある可能性があります。検証を実行している場合は、検証の概要をページに配置します。(フィールドレベルのエラーを抑制しないように指定します。)これにより、表示されているフィールドに属していないエラーを含むすべてのエラーが表示されます。

于 2012-07-09T12:31:53.463 に答える
0

前回このような問題が発生したのは、あるべきではない何かがnullだったためです。

あなたが言う行のコードにブレークポイントを置きます:

   if (modelState.IsValid)

modelStateにドリルダウンすると、コードのどの部分にエラーがあるかを確認できます。あなたはそこからそれを解決することができるはずです。

于 2012-07-09T09:45:10.593 に答える
0

この画像を参照してくださいモデルの状態をド​​リルダウンします 1) 値を選択します 2) 各メンバーをドリルダウンしてエラーを探します

画像リンクを見つけて、@RBT を参照してください

于 2017-01-04T06:36:17.393 に答える
0

次のようにして、エラーの場所を確認できます。

var errors = ModelState.Values.SelectMany(v => v.Errors);
        if (ModelState.IsValid)
        {

        }
于 2016-05-14T23:49:45.230 に答える
-3

ビューの作成時にフィールドを自動的に生成し、必要なフィールドをコピーしてから、必要に応じてそれらの一部を非表示にします

于 2017-03-30T09:49:19.533 に答える