1

私は mvc3 と razor に不慣れで、その分野では C# です。小さな会社が、失敗したプロジェクトに基づいてこの巨大なプロジェクトを実行する契約をくれました...今、選択に基づいて本のテーブルを作成する必要がありますユーザーによって保存された...本には現在、モデルに約40の異なる情報があり、テンプレートエディターまたはその他の方法で正しく設定する方法を考えています...

現在、ビューでは次のようになっています。

<table>
      <tr class="header">
         @if (!((List<string>)Session["searchPreferences"]).Contains("Authors"))
         {
              <td>Author</td>
         }
         @if (!((List<string>)Session["searchPreferences"]).Contains("bookName"))   
         {
              <td>bookName</td>
         }
         @if (!((List<string>)Session["searchPreferences"]).Contains("editorName"))
         {
              <td>editorName</td>
         }
     </tr>


        @foreach (BookModel book in Model.bookList)
        { 
        <tr class="element">
            @if (!((List<string>)Session["searchPreferences"]).Contains("Author"))
            {
                <td>@book.Author</td>
            }
            @if (!((List<string>)Session["searchPreferences"]).Contains("editorName"))
            {
                <td>@book.editorName</td>
            }
        </tr>
      + 1 <tr> </tr> ... for each 40 attributes in books
    </table>

エディター テンプレートを作成して、検索設定を含めるにはどうすればよいですか (セッションまたは LogUser モデルに保存されます ...

その他の質問:

@Html.EditorFor(model => model.Books) を使用する概念を把握しましたが、本のリストがループしてスローされますが、ユーザーが望むものだけが表示されるようにするにはどうすればよいですか?テンプレートにある種のパラメーターを渡し、渡されたリストを使用して各列を検証しますか?

私のテンプレートを書き留めるより簡単な方法はありますか..「本のモデルで各プロパティを取得し、ユーザーが選択した場合に行を作成する」のようなものです。 「彼がアイデアを変えるたびに、すべてを再コーディングする必要があります...私が先輩に言われたことは、非常に頻繁に起こります. (経験が少ない割に給料はとても良いので、たとえプロジェクトが間違って開始され、クライアントが最初からやり直すことを拒否したとしても、私はこれに取り組もうとします。)

情報、ヘルプなどを事前に感謝します...たとえそれが役立つ良いデモやブログエントリへのリンクであっても.

4

1 に答える 1

1

あなたが何をしようとしているのかは 100% わかりませんが、あなたが正しく理解できれば、表に何を表示するかについてのユーザー設定のリストがあります。あなたへの私のアドバイスは、あなたが望むようにデータをフォーマットしたView Modelを構築することです。

つまり、モデルをビューに渡すまでに、ユーザーが検索設定で指定した列とデータのみが表示されます。

列のリストを保持する Book オブジェクトを持つことができます。各「列」は、ラベルと値を持つ独自のオブジェクトです。

public BookViewModel() { リスト データ { get; 設定; } }

public Column() { 文字列ラベル { get; 設定; } 文字列値 { get; 設定; } }

モデルをロードするときは、ユーザーが必要とするデータの列のみを作成します。

あなたがそれをフォーマットするためのより良い方法があるかもしれません. ただし、ページ上の Razor ではなく、データ サーバー側のフィルタリングと書式設定の処理を検討する必要があると思います。

エディター テンプレートは、特にオブジェクトがページの多くの場所で使用されるため、同じことを繰り返す必要がない場合に、html ページでのオブジェクトの表示方法をカスタマイズするためのものです。データをフィルタリングするために実際に作成されたわけではありません。

これが意味をなさないか、誤解した場合はお知らせください。

于 2012-08-30T19:49:36.047 に答える