lewati dua model dengan tanggal terkait untuk melihat MVC4

Bagaimana cara melewatkan dua model dengan tanggal terkait untuk melihat MVC4.

Saya memiliki kelas persyaratan dan pemasok harus memeriksa apakah dia memiliki persyaratan khusus atau tidak.

Jadi saya perlu menunjukkan dalam pandangan saya daftar persyaratan di satu kolom dan pemeriksaan/jawaban pemasok di kolom lain. Jadi saya rasa saya harus melewati 2 model yang saling terkait satu sama lain. Bagaimana cara melakukannya? Dan kemudian menyimpan jawaban pemasok untuk kebutuhan spesifik di DB.

Ini model saya

 namespace OTMS.Models
{
public class Requiernments
{
           [Key]
           public int RequiernmentId { get; set; }
           public int ID { get; set; }//link to project Name
           public string RequiernmentName { get; set; }
           public string RequiernmentType { get; set; }

     }

 namespace OTMS.Models
 {
  public class Supplier
   {
    [Key]
    public int SupplierId { get; set; }
    public int RequiernmentId { get; set; }
    public string SupplierName { get; set; 
    public string Answer{ get; set; }
   }
 }

Pembaruan:

Model tampilan saya:

namespace OTMS.ViewModel
{
   public class SupplierAnswerViewModel
   {

     public Supplier Sup{ get; set; }
      public Requiernments Req { get; set; }
  }
}

Pengontrol saya:

     public ProjectContext b = new ProjectContext();
    public ActionResult ListRequiermentBySupplier(int ID) //Id of the project
    {


        var Project = b.RequiernmentEntries.Where(s => s.ID == ID).ToList();//geting all requierment under project


        List<SupplierAnswerViewModel> listvm = new List<SupplierAnswerViewModel>();
        SupplierAnswerViewModel vm = new SupplierAnswerViewModel();

        vm.requirements = new Requiernments();
        vm.requirements.RequiernmentId = ID;

        vm.supplier = new Supplier();
        vm.supplier.SupplierId = 2; //am testing supplier of this id=2 for now

       listvm.Add(vm);

        return View(listvm); ;
    }

Pandangan ku:

   @model IEnumerable<OTMS.ViewModel.SupplierAnswerViewModel>



 <table>
  <tr>
    <th>
        RequiernmentName
    </th>
    <th>
       RequiernmentType
    </th>
    <th>
        UserId
    </th>
    <th>
       SupplierName
    </th>
    <th>
       Supplier Answer
    </th>


    <th></th>
</tr>
@if (Model != null)
 {
     foreach (var item in Model)
     {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.requirements.RequiernmentName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.requirements.RequiernmentType)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.supplier.UserId)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.supplier.SupplierName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.supplier.Answer)
    </td>
    <td>


    <td>
        @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |

    </td>
</tr>
     }
   }

 </table>

person user1476956    schedule 03.06.2014    source sumber
comment
kemungkinan duplikat ASP.NET MVC - Lihat dengan banyak model   -  person Erik Philips    schedule 03.06.2014


Jawaban (1)


membuat model tampilan

public class ViewModel{
    public Requirements requirements { get; set; }
    public Supplier supplier { get; set; }
}

lalu di pengontrol Anda

List<ViewModel> listvm = new List<ViewModel>();
ViewModel vm = new ViewModel();
vm.requirements.RequiernmentId 
vm.supplier.SupplierID = ...
listvm.Add(vm);

Sunting

untuk mengirim salah satu item sebagai daftar lihat perubahan saya di atas. Kemudian teruskan model tampilan Anda ke tampilan

return View(listvm);

dan menurut pandanganmu

@model List<OTMS.ViewModel.SupplierAnswerViewModel>
person Matt Bodily    schedule 03.06.2014
comment
dan bagaimana saya akan menyampaikannya ke dalam pandangan saya? - person user1476956; 03.06.2014
comment
silakan periksa pembaruan saya ..saya mendapatkan kesalahan berikut: Item model yang dimasukkan ke dalam kamus bertipe 'OTMS.ViewModel.SupplierAnswerViewModel', tetapi kamus ini memerlukan item model bertipe 'System.Collections.Generic.IEnumerable`1[ OTMS.ViewModel.SupplierAnswerViewModel]'. - person user1476956; 03.06.2014
comment
itu karena Anda meneruskan satu model ke tampilan tetapi Anda telah menentukan daftar model tersebut pada tampilan. jika Anda meneruskan daftar atau mengubah tampilan Anda menjadi hanya satu contoh, kesalahan akan hilang - person Matt Bodily; 03.06.2014
comment
hmm, yang saya perlukan adalah daftar dan pemasok pengguna akan memberikan jawabannya dan mempostingnya kemudian .... Ini berfungsi seperti formulir untuk menjawab pertanyaan dan kemudian saya dapat memeriksa setiap jawaban pemasok .. Bagaimana cara meneruskannya sebagai daftar? - person user1476956; 03.06.2014
comment
Saya mencoba ..tetapi kemudian Anda tidak dapat menggunakan sesuatu seperti @Html.DisplayFor(modelItem =› item.requirements.RequiernmentName)...itu tidak akan menampilkan saya (RequiernmentName,RequiernmentType)...etc - person user1476956; 03.06.2014
comment
sepertinya Anda menginginkan persyaratan dan pemasok satu lawan satu, tetapi daftarnya. Saya telah mengubah jawaban saya untuk mencerminkan hal itu - person Matt Bodily; 03.06.2014
comment
tidak, jika Anda melihat kode saya, saya meneruskan daftar ke tampilan dan model pada tampilan adalah daftar. mereka cocok sehingga tidak akan ada kesalahan - person Matt Bodily; 03.06.2014
comment
oke untuk saat ini setidaknya saya bisa mendapatkan tampilan dengan daftar kosong ..Saya rasa saya memiliki masalah dalam pengontrol saya ..(Periksa pengontrol pembaruan)..Saya tidak ingin membuat persyaratan baru karena saya memilikinya di saya DB jadi saya hanya mendapatkannya menggunakan (proyek var) .. - person user1476956; 03.06.2014