0

1 つのビューで 2 つのテーブルをマージする方法 これは私のモデルです。

namespace ProfileApplication.Models
{
    using System;
    using System.Collections.Generic;

    public partial class EMP
    {
        public string EMP_ID { get; set; }
        public string EMP_NAME { get; set; }
        public string EMP_LNAME { get; set; }
     } 

    public partial class X_EMP_MAIL
    {
        public string EMP_ID { get; set; }
        public string EMAIL { get; set; }
    }

これは私のコントローラーです。

public class profileController : Controller
    {
        //
        // GET: /profile/
        ProfileEntities db = new ProfileEntities();

        public ActionResult Index()
        {
            return View(db.EMP.ToList());
        }

        public ActionResult detail(string id = null) 
        {

            var query = from EMP in db.EMP

                        join X_EMP_MAIL in db.X_EMP_MAIL on EMP.EMP_ID
                             equals X_EMP_MAIL.EMP_ID

                        where   X_EMP_MAIL.EMP_ID == EMP.EMP_ID
                        select new joinproflie
                        {
                            EMP_ID    = EMP.EMP_ID,
                            EMP_NAME  = EMP.EMP_NAME,
                            EMP_LNAME = EMP.EMP_LNAME,
                            EMAIL     = X_EMP_MAIL.EMAIL
                        };

            if (query == null)
            {
                return HttpNotFound();
            }
            return View(query);
        }

これが私の見解です

@model IEnumerable<ProfileApplication.Models.EMP>
 @foreach (var item in Model)
    {
        <tr>
            <td>@item.EMP_ID    </td>
            <td>@item.EMP_NAME  </td>
            <td>@item.EMP_LNAME </td>
            <td>@item.EMAIL </td>
         <!--   -->
        </tr>
        <br/>
    }

どうすればいいですか?

4

2 に答える 2

1

もう 1 つのビューモデル クラスを作成して、両方のビューモデルを組み合わせることができます。

public partial class EMP_Details
{
    public string EMP_ID { get; set; }
    public string EMP_NAME { get; set; }
    public string EMP_LNAME { get; set; }
    public string EMAIL { get; set; }
 }

コントローラーでビューモデルを返すように変更しEMP_Detailsます。なので

public ActionResult detail(string id = null) 
    {

        var query = from EMP in db.EMP

                    join X_EMP_MAIL in db.X_EMP_MAIL on EMP.EMP_ID
                         equals X_EMP_MAIL.EMP_ID

                    where   X_EMP_MAIL.EMP_ID == EMP.EMP_ID
                    select new EMP_Details
                    {
                        EMP_ID    = EMP.EMP_ID,
                        EMP_NAME  = EMP.EMP_NAME,
                        EMP_LNAME = EMP.EMP_LNAME,
                        EMAIL     = X_EMP_MAIL.EMAIL
                    };

        if (query == null)
        {
            return HttpNotFound();
        }
        return View(query);
    }

ビューで ViewModel 名を次のように変更します。

@model IEnumerable<ProfileApplication.Models.EMP_Details>

これで完了です。

于 2013-06-07T09:54:43.363 に答える
0

プロパティ EMP_ID、EMP_NAME、EMP_LNAME、および EMAIL を使用してモデル クラスを作成するか、動的をモデルとして使用できます。

于 2013-06-07T09:32:03.520 に答える