通过两个具有相关日期的模型来查看 MVC4

Posted

技术标签:

【中文标题】通过两个具有相关日期的模型来查看 MVC4【英文标题】:pass two model with related date to view MVC4 【发布时间】:2014-06-03 07:34:28 【问题描述】:

如何传递两个具有相关日期的模型来查看 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; 
   
 

更新

我的视图模型:

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>

【问题讨论】:

ASP.NET MVC - View with multiple models的可能重复 【参考方案1】:

创建视图模型

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>

【讨论】:

以及如何将其传递到我的视图中? 请检查我的更新..我收到以下错误:传递到字典中的模型项的类型为“OTMS.ViewModel.SupplierAnswerViewModel”,但该字典需要“系统”类型的模型项。 Collections.Generic.IEnumerable`1[OTMS.ViewModel.SupplierAnswerViewModel]'。 这是因为您将单个模型传递给视图,但您已经在视图上定义了该模型的列表。如果您传递列表或将视图更改为仅单个实例,则错误将消失 嗯,我需要的是列表,用户“供应商”将给出他的答案并发布......它就像一个回答问题的表格,然后我可以检查每个供应商的答案。 .如何将其作为列表传递? 我尝试..但是你不能使用像@Html.DisplayFor(modelItem => item.requirements.RequiernmentName)这样的东西.....它不会显示我(RequiernmentName,RequiernmentType) ...等

以上是关于通过两个具有相关日期的模型来查看 MVC4的主要内容,如果未能解决你的问题,请参考以下文章

将客户端特定的日期格式返回到服务器 MVC4

如何查询两个不同日期的 Google Analytics 条件?

Django通过对两个字段的查询来区分分组

使用父模型值的子模型验证。流畅的验证。 MVC4

JQuery Mobile 日期选择器未在 Chrome 中显示日期

核心数据 - 查找具有重叠日期范围的记录