0

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 に戻る必要がありますか?

4

1 に答える 1

1

標準のMVCコントローラーとJSONResult、またはMVC4のWebAPIを使用して、C#オブジェクトをJSONとしてシリアル化/逆シリアル化できます。つまり、javascriptでc#オブジェクトを明示的に再定義する必要はありません。

ブラウザでは、必要に応じて、ノックアウトマッピングプラグインを使用して、jsonプロパティをノックアウトオブザーバブルにすることができます。

これは一般に、サーバーからhtmlを動的にロードしてレンダリングするよりもクリーンで堅牢なアプローチです(それが提案された場合-投稿から100%明確ではありませんでした)。

于 2013-02-13T17:00:11.987 に答える