2014-06-03 2 views
0

Как пройти две модели со связанной датой для просмотра MVC4.Пропустите две модели со связанной датой для просмотра MVC4

У меня есть класс требований, и поставщик должен проверить в пределах своего требования или нет.

Так что мне нужно показать на мой взгляд список требований в одном столбце и проверить/ответить поставщику в другом столбце. Поэтому, я думаю, мне нужно передать 2 модели, которые они связаны друг с другом. Как это сделать? А затем сохраните ответы поставщиков на конкретные требования в БД.

Вот мои модели

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; } 
    } 
} 

Update:

Мой ViewModel:

namespace OTMS.ViewModel 
{ 
    public class SupplierAnswerViewModel 
    { 

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

Мой контроллер:

 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); ; 
    } 

Мое мнение:

@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> 
+0

возможно дубликат [ASP.NET MVC - Просмотр с несколькими моделями] (http://stackoverflow.com/questions/ 944334/asp-net-mvc-view-with-multiple-models) –

ответ

0

создать модель представления

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

затем на контроллере

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

Редактировать

послать одного из элементов в виде списка увидеть мои изменения выше. Затем передайте вашу модель представления к представлению

return View(listvm); 

и на ваш взгляд

@model List<OTMS.ViewModel.SupplierAnswerViewModel> 
+0

и как я передам это на мой взгляд? – user1476956

+0

, пожалуйста, проверьте мое обновление ..am, получив следующую ошибку: Элемент модели, переданный в словарь, имеет тип «OTMS.ViewModel.SupplierAnswerViewModel», но для этого словаря требуется элемент модели типа «System.Collections.Generic.IEnumerable» [OTMS.ViewModel.SupplierAnswerViewModel]. – user1476956

+0

, потому что вы передаете единую модель в представление, но вы определили список этой модели на представлении. если вы передадите список или измените свое мнение только на один экземпляр, ошибка исчезнет. –

Смежные вопросы