0

mvc3 の単一ビューで 2 つのテーブルまたは 2 つのクラスからデータを取得する方法。両方のテーブルのデータを表示したい。私は1つの親クラスと2つの子クラスを持っています。つまり、public class GetDocumentParent { enter code here public List getDocument { get; 設定; } パブリック リスト getDocumentRevision { get; 設定; } }

意見:

" %>
<% foreach (var item in Model.getDocument)
   { %>


        <tr>
            <td>

             <%:Html.DisplayFor(ModelState => item.DOCUMENT_NAME)%>
            </td>
            <td>
              <%:Html.DisplayFor(ModelState => item.ActiveDate)%>
            </td>    
            <td>
                <%:Html.DisplayFor(ModelState => item.Revision)%>
            </td>
             <td>
      </tr>

<% } %>

==>ドキュメント クラスの item.DOCUMENT_NAME と item.ActiveDate。

Document_Revision クラスの item.Revision。

両方のクラスの値を同時に表示する方法。

コントローラ:

var model = new GetDocumentParent
             {
                 getDocument = db.Document.ToList(),
                 getDocumentRevision = db.DocumentRevisions.ToList()

             };
             return View(model);

モデル: 1.

パブリック クラス ドキュメント {

     public string DOCUMENT_NAME
      {
        get;
        set;
      }
    public Nullable<System.DateTime> ActiveDate
      {
        get;
        set;
      }
}

2.

public class DOCUMENT_REVISIONS { public string REVISION { get; 設定; } }

前もって感謝します

4

2 に答える 2

1

ビューに送信されるデータを表すビュー モデルを持つことが最善であることを常に覚えておいてください。ビューは、ビューモデルで必要なことを行います。以下のコードが参考になります。シナリオに合わせてコードを変更するだけです。

私には顧客がいて、各顧客には1つの住所しかないとしましょう。CustomerDetailsViewModelこのデータを表すために呼び出されるビュー モデルを作成します。

public class CustomerDetailsViewModel
{
     public string FirstName { get; set; }

     public string Lastname { get; set; }

     public int Age { get; set; }

     public string AddressLine1 { get; set; }

     public string AddressLine2 { get; set; }

     public string City { get; set; }
}

顧客と顧客住所の詳細を表示するアクション メソッド:

public class CustomerController : Controller
{
     private readonly ICustomerRepository customerRepository;

     public CustomerController(ICustomerRepository customerRepository)
     {
          // Check customerRepository for nulls

          this.customerRepository = customerRepository;
     }

     public ActionResult Details(int id)
     {
          // Check that id is not zero or negative

          Customer customer = customerRepository.GetById(id);

          // Get the customer's address
          Address address = customerRepository.GetCustomerAddress(id);

          CustomerDetailsViewModel viewModel = new CustomerDetailsViewModel()
          {
               FirstName = customer.Firstname,
               LastName = customer.LastName,
               Age = customer.Age,
               AddressLine1 = address.AddressLine1,
               AddressLine2 = address.AddressLine2,
               City = address.City
          }

          return View(viewModel);
     }
}

id上記は、顧客の一意の識別子を表します。顧客を返すために使用されます。

Customer customer = customerRepository.GetById(id);

また、特定の顧客の住所を返すためにも使用されます。

Address address = customerRepository.GetCustomerAddress(id);

ICustomerRepositoryインスタンスはIoC container、たとえばAutofacによって注入されます。

あなたのビューでは、このビューモデルをそのまま渡し、好きなようにデータを表示できます:

@model MyProject.DomainModel.ViewModels.Customers.CustomerDetailsViewModel

<div class="content">

     <div class="display-label">First Name: </div>
     <div class="display-content">@Model.FirstName</div>

     <div class="display-label">Last Name: </div>
     <div class="display-content">@Model.LastName</div>

     <div class="display-label">Age: </div>
     <div class="display-content">@Model.Age</div>

     <div class="display-label">Address Line 1: </div>
     <div class="display-content">@Model.AddressLine1</div>

     <div class="display-label">Address Line 2: </div>
     <div class="display-content">@Model.AddressLine2</div>

     <div class="display-label">City: </div>
     <div class="display-content">@Model.City</div>

</div>

これが役立つことを願っています。

于 2012-08-27T11:44:35.033 に答える
0

何が問題ですか?コントローラーで使用:

var model = new GetDocumentParent();
model.getDocument = ...//Code that initialize getDocument
model.getDocumentRevision =...//Code that initialize getDocumentRevision

ビューで:

@Html.EditorFor(m=>m.getDocument);
@Html.EditorFor(m=>m.getDocumentRevision);
于 2012-08-27T11:24:28.377 に答える