web-dev-qa-db-ja.com

ASP.NET MVC 4 Razorプロジェクトのビューでコレクションを表示する方法は?

私は次のモデルを持っています:

public class ContractPlain
{
    public int Id { get; set; }
    public Guid ContractGuid { get; set; }
    public int SenderId { get; set; }
    public int RecvId { get; set; }
    public int ContractType { get; set; }
    public string ContractStatus { get; set; }
    public DateTime CreatedTime { get; set; }
    public DateTime CreditEnd { get; set; }
}

public class Contrtacts
{
    List<ContractPlain> listOutput;

    public void Build(List<ContractPlain> listInput)
    {
        listOutput = new List<ContractPlain>();
    }

    public List<ContractPlain> GetContracts()
    {
        return listOutput;
    }

    internal void Build(List<contract> currentContracts)
    {
        throw new NotImplementedException();
    }
}

ご覧のとおり、コレクション全体を定義しました。

どうして?

正確/一意のユーザーに属する行がいくつかあるため、ユーザーのテーブルにデータを表示する必要があります(たとえば、20〜30のショップアイテムは単一のクライアントを参照します)。

つまり、ADO.NETエンティティを使用してDBからデータを取得しています。 Controllerのモデルインスタンスへのバインディングの質問が行われ、問題はありません。レンダリングの質問のみで行います。

@forと一緒に使用できると思いますが、特に私のカスタムモデルを使用するとどのように改善されるかわかりませんでした。

では、モデルを使用してViewのデータをどのようにレンダリングできますか?

ありがとう!

10
user2402179

以下のビューを参照してください。あなたは単にあなたのコレクションを先取りし、契約を表示します。

コントローラ:

public class ContactsController : Controller
{
   public ActionResult Index()
   {
      var model = // your model

      return View(model);
   }
}

見る:

<table class="grid">
<tr>
    <th>Foo</th>
</tr> 

<% foreach (var item in Model) { %>

<tr>
    <td class="left"><%: item.Foo %></td>
</tr>

<% } %>

</table>

かみそり:

@model IEnumerable<ContractPlain>

<table class="grid">
<tr>
    <th>Foo</th>
</tr> 

@foreach (var item in Model) {

<tr>
    <td class="left"><@item.Foo></td>
</tr>

@}

</table>
12
Sam Leach

アクションがListのコントラクトを返す場合、ビューで以下を実行できます。

@model IEnumerable<ContractPlain>

@foreach(ContractPlain contract in Model) 
{
    <ul>
        <li>@contract.ContractGuid</li>
        <li>@contract.SenderId</li>
        <li>@contract.ContractStatus</li>
        <li>@contract.CreditEnd</li>
    </ul>
}
5