Visual Studio TFS プラグインで作業項目を検索できるように、一連の検索条件を作成することで、ユーザーが一連のデータをクエリできるページを作成しています。行。結合条件として「and」または「or」を選択し、フィールドを選択して値を入力し、それに一致するか一致しないかを選択します。
1. show items where [Field] [is|is not] [value]
2. [and|or] [Field] [is|is not] [value]
3. [and|or] [Field] [is|is not] [value]
etc...
今、私はこれを構築する方法を検討しており、考えがありました。以前は Knockout を使用していましたが、これには Javascript でモデルを作成してデータをマップする必要があり、サーバー側コードの C# でそれらのモデルが既にある場合は冗長に思えます。もちろん、Razor コードを使用して、モデルの一部である基準のリストを厳密に型指定されたビューで foreach することはできますが、このリストに適切に追加する方法が見つかりません。
C# のモデル構造は (大まかに) 次のようになります。
Field
:- フィールド名
- 値のオプションのリスト
- is/is not オプションのブール値。
Criterion
:Field
- 選択した値
- 組み合わせタイプ (および/または)
Query
:- のリスト
Criterion
(Criteriaを言わないと変に見える) - 開始日と終了日
- ユーザーのアクセスレベル
- ビュー フィールドと並べ替えオプション
- のリスト
QueryViewModel
:Query
- 表示オプションの選択領域にデータを入力する各種リスト
- ページ上の他の (関連のない) 表示用の小さなメタデータ
Knockout では、「検索条件を追加」ボタンにクリックによる方法を追加して、条件のリストに新しいエントリを追加します。Razor 関数ブロック ( @functions { ... }
) を使用して同様の結果を得ることができますか? 私はいくつかのことを試しましたが、ビューモデルがスコープ内にないように見えるか、ビューモデルの新しいコンテンツを表示するためにページを更新する方法がないことがわかりました (私は何かを試していますが)新しく更新されたビューモデルを部分ビューに渡す必要があり、これは何とか機能する可能性があります)。これを行うことができますか、それとも深呼吸して Javascript に戻る必要がありますか?