处理控制器和视图中的Icollection

时间:2012-08-07 07:49:15

标签: asp.net-mvc list icollection

我有一个像这样的2个模型(我已经输入了我想要的字段)

[Table("TripAllocation", Schema = "dbo")]
public class TripAllocation
{
    public int TripAllocationId { get; set; }
    public ICollection<Requisition> Requisitions { get; set; }

}


[Table("Requisition", Schema = "dbo")]
public class Requisition
{
    [Key]
    public int RequisitionId { get; set; }

    public int? TripAllocationId { get; set; }
    public TripAllocation TripAllocation { get; set; }

}

所以现在我想通过TripAllocation表在Requisition表中为TripAllocationId选择值。我想通过在申请单视图中创建driodownlist来实现这一目的。

我想从TripAllocation表中执行此操作,并为TripAllocationId添加请购单列表。

那么我怎么能通过使用MVC处理Controller和View来做到这一点。

(当我创建旅行时,请求列表应该应用于一个AllocationTripId)

2 个答案:

答案 0 :(得分:0)

我不知道我是否完全理解您的问题,但听起来您希望您的视图显示按TripAllocationId搜索的请购单列表?

首先,根据你的代码示例我的假设是你正在使用LINQ-to-SQL,我已经有一段时间没用了,所以请原谅我,如果我的代码示例不是100%完成的话。但基本上,您只需要使用DataContextRequisitions上急切加载TripAllocation。你的控制器方法看起来像这样:

public ActionResult Requisitions(string id)
{
    TripAllocation allocation;
    List<Requisition> requisitions;

    using (var context = new MyDataContext)
    {
        allocation = context.TripAllocations.SingleOrDefault(c => c.TripAllocationId == id);
        requisitions = allocation.Requisitions.ToList();
    }

    return View(requisitions);
}

如果我已正确理解您的问题,您将传递控制器方法TripAllocationId,它将使用LINQ-to-SQL导航对象图并返回视图List<Requisition>

答案 1 :(得分:0)

这基本上就是我想要的。当我通过旅行分配创建TripAllocation时。我想为一个TripAllocation原始添加一些请购单列表。 (但我可以简单地当我创建一个Rquisition时,我可以通过在请求创建视图中创建一个下拉列表来为一个申请的瞬间添加一个TripAllocation。但它不是我想要的那个。我想做与此相反的事情)