0

小さなヘルプデスク アプリケーションを改造しています (ASP クラシックから MVC4 に移行)。これは私の最初の完全な MVC アプリケーションです。私は Razor を選択しましたが、かなり直感的だと感じています。しかし、ここで壁にぶち当たりました。

データベースからチケットのリストを取得して、ユーザーに表示します。私が望むのは、テーブルを動的に作成することです。現在、ヘッダーを手動で配置していますが、これで問題ありません。ただし、それを動的に行う方法がある場合は、提案を受け付けています。

しかし、重要な部分は、チケットから各プロパティを取得することです。20 を超えるプロパティを持つTicketクラスがあります。表示したい最小値までそれらを削っていきますが、出発点として、それらをすべて画面に表示しようとしています.

私は次のものを持っています:

@model IList<Helpdesk4.Models.Ticket>

...

@foreach (var ticket in Model)
{ 
     <tr>
       @foreach (var item in ticket)
       { 
          <td>item</td>
       }
     </tr>
 }

しかし、私はそれforeachをチケットで実行することはできません。私は十分な初心者なので、理由が完全にはわかりませんが、プロパティをロードする必要があるため、デフォルトでは列挙できないと思います。では、各プロパティ名を取得せずに、チケットから各プロパティの値を取得するにはどうすればよいでしょうか?

NHibernateそれが違いを生む場合、私はデータベースへのクエリに使用しています。

4

2 に答える 2

1

各プロパティ値を手動で行に追加する場合、これを行う最も明確で簡単な方法です。これには少量の「余分な」作業が必要ですが、これは 1 回限りの作業であり、20 個のプロパティはそれほど多くありません。また、各プロパティの表示方法、右揃えまたは左揃えなどをより細かく制御できます。

あなたが最終的にはこのようなものです

@foreach (var ticket in Model)
{ 
    <tr>            
        <td>
            @ticket.FirstProperty
        </td>
        <td class="align-right">
            @ticket.SecondProperty
        </td>
        <td class="align-center bold">
            @Html.DisplayFor(m => ticket.ThirdProperty)
        </td>
        <td>
            <i>@ticket.FourthProperty</i>
        </td>
        ...
    </tr>
}

カスタマイズ性を重視するために追加されたスタイリングなど。

初めての MVC プロジェクトで頑張ってください!

于 2013-09-14T05:25:14.683 に答える
0

Foreach は列挙可能な項目でのみ機能し、一般的なクラスは IEnumerable を実装しません。各アイテムを自分で配置する必要があります。Html.TextBoxFor(m => m.Property)最良の方法は、各プロパティのようなものを使用することです。

編集: 最善の方法はHtml.LabelFor、オブジェクト自体で使用することです。

@for(int index = 0; index < Model.Count; ++index)
{
  <tr>
    @Html.LabelFor(m => m[index])
  <tr>
}
于 2013-09-13T21:25:40.103 に答える