3

Razor ビュー エンジン内でブレーク ポイントを設定してラムダ式をテストする方法を教えてください。

たとえば、以下のコードがあります。

@(Html.DropDownList("Condition4", 
                    new SelectList(Model
                                   .Conditions
                                   .Where(c => 
                                          c.TxCondition.TxConditionTypeId == Model.ConditionTypes.Single
                                          ct => ct.TxConditionType.ConditionTypeCode == "Region")
                                    .TxConditionType
                                    .TxConditionTypeId), 
                    "TxCondition.TxConditionId", 
                    "ConditionTitle",
                    Model.SearchCondition.Condition4), 
    "All"))

ブレークポイントで、次のコードを使用してテストしようとしました"Quick Watch Windows" が、エラーは「式にラムダ式を含めることはできません」でした

MVC Razor ビューでラムダ式をテストする方法を教えてください。

お時間をいただき、ありがとうございました。

Model.Conditions.Where(c => c.TxCondition.TxConditionTypeId == 1)
4

2 に答える 2

2

デバッグと Lambda は常に扱いにくいものです。

ユーザーから次のような質問がありました: Visual Studio の「クイック ウォッチ」ツールとラムダ式のデバッグについて、匿名関数は実際には非常に複雑であり、コンパイラ側で多くの作業が必要であると説明されました。したがって、それらをクイックウォッチなどに実際に入れることはできません。

あなたの問題を本当に解決することはできませんが、少し異なるアプローチを提案したいと思います.

MVC では、ビューはばかげているはずです。彼らは本当に「何かをしている」はずです。私が言いたいのは、変数の作成、ロジックの実行、オブジェクトの選択またはインスタンス化などに実際に関心を持つべきではないということです。代わりに、与えられたオブジェクトを単純に取得して、それらを表示しようとする必要があります。

これにより、これらすべてをコードベースの別の場所に配置する必要があります。優れたアーキテクチャ、階層化、および関心の分離を適切に使用することで、ビジネス ロジックを含む物事を整理することができます。さらに、Lambda を使用してロジックを記述するときに、その Lambda が少し複雑な場合は、コンポーネントを分割して、デバッグとステップ実行が容易になるようにすることをお勧めします。

ICollection<object> filter1 = someCollection.Where(x => x.IsAvailable);
object myObject = filter1.SingleOrDefault(x => x.SomeString = "aValue").Distinct();
于 2013-11-11T23:31:35.410 に答える