2011-01-24 11 views
1

私はC#MVCプロジェクトを持っており、ユーザーはデータの出力方法を選択できます(kmh/mph、CST、EStなどでの速度、KMでの距離、マイル、メーター、ヘクターなど)。設定を取得するたびにdbに戻って実行するのではなく、ログオン時に暗号化されたクッキーのユーザーデータ部分に埋め込みます。私は、私のサービスがBLLで実装され、BOLで定義されたモデルでサービス・レポジトリ・パターンも使用しています。また、データをJsonResults(NewtonSoft Libraryを使用)として返します。このユニット選好情報をビジネスロジックレイヤーに渡すことなく、データをユーザー指定のタイプに変換するための最良の戦略(場所と方法)は何ですか?最初はcustomAttributesを使用し、独自のCustomJsonResult actionResultを作成してリフレクションを使用し、Json文字列を生成することを考えていましたが、これは自分のオブジェクトトラバーサルアルゴリズムが必要になります。私の主な関心事は、自分のアプリケーションを無国籍にしたいということです。MVCユーザーフォーマットの出力

答えて

0

この変換は、ビジネスオブジェクトをビューに渡すビューモデルに変換するマッピングレイヤーで実行できると思います。したがって、コントローラはビ​​ジネスレイヤにクエリを実行してモデルを取得し、次にクッキーに格納されたユーザ設定をクエリし、それらの2つのエンティティをマッピングレイヤに渡します。マッピングレイヤは、ユーザロケールに基づいて必要な変換とフォーマットを行い、単純に情報を出力する強く型付けされたビューに送信される準備ができているビューモデル。

もう1つの可能性は、ビュー内でモデル値を取り、クッキー出力に保存されたユーザー設定に基づいて変換を実行し、フォーマットされた文字列を出力するカスタムHTMLヘルパーを使用することです。

+0

Hey Darin、洞察のおかげで、私は別のActionResultsすなわちJsonResult()、CSVResult()などにデータを渡しています。したがって、これらのデフォルトのメソッドに送信する前に、 。あなたは私がHTMLビューにレンダリングしていた場合、静的ヘルパー関数でこれを行うことができます。しかし、私はそうではありません: – Amit

+0

@Amit、マッピング層で変換を実行するための私の最初の提案は有効なままです。 –

関連する問題