asp.net mvc中父视图中的多个部分/子视图

时间:2015-12-02 08:56:21

标签: c# asp.net-mvc asp.net-mvc-4 collections

我想创建一个如下图所示的视图页面。它有3个部分。

第1部分:表列表 - 显示可用产品列表

第2部分:摘要1 - 显示最新推出的2个带有简短描述的产品

第3节:摘要2 - 显示3个最新的小组讨论主题和简短描述

enter image description here

为此我只关注了this Tutorial

我刚试图创建将表格初始化为局部视图。我希望​​添加其他两个部分。

像这样的设计模型

public class DashboardViewModel
{
    public ProductTableViewModel ProductTable;

    public NewProductViewModel NewProduct;

    public DiscussionsViewModel Discussions;
}
public class ProductTableViewModel
{
    [Display(Name = "S.No")]
    public string Product_ID { get; set; }

    [Display(Name = "Product Title")]
    public string Product_Title_EN { get; set; }

    .....
}

为此我就像这样创建了DAL

  public class DashboardData
    {
        public DBEntities db = new DBEntities();
        public ProductTableViewModel GetAllProducts()
        {
              var result = (from product in db.AB_Product
                            .....
                            select new ProductTableViewModel
                            {
                            .....     
                            }).ToList();

            return result;
        }

然后我在控制器中这样称呼它。

    public ActionResult Dashboard()
    {

        ProductTableViewModel pdct = new ProductTableViewModel();
        DashboardViewModel puff = new DashboardViewModel();


        puff.ProductTable = pdct.GetAllProducts();

        return View(puff);    
    }

然后我得到以下错误

  

无法隐式转换类型   System.Collections.Generic.List< project_name.Models.ProductTableViewModel>”   到'project_name.Models.ProductTableViewModel'

其他错误

  

'ProductTableViewModel'不包含的定义   'GetAllProducts'并且没有扩展方法'GetAllProducts'接受a   “ProductTableViewModel”类型的第一个参数

2 个答案:

答案 0 :(得分:2)

将pdct ProductTableViewModel的类型更改为DashboardData

DashboardData pdct = new DashboardData()

public class DashboardViewModel
{
    public List<ProductTableViewModel>  ProductTable;

    public NewProductViewModel NewProduct;

    public DiscussionsViewModel Discussions;
}
public List<ProductTableViewModel> GetAllProducts()
        {
              var result = (from product in db.AB_Product
                            .....
                            select new ProductTableViewModel
                            {
                            .....     
                            }).ToList();

            return result;
        }

答案 1 :(得分:2)

在这里,您尝试返回 ProductTableViewModel 列表,而不是单个 ProductTableViewModel .So首先将返回类型更改为List<ProductTableViewModel>

 public class DashboardData
 {
         public DBEntities db = new DBEntities();
         public List<ProductTableViewModel> GetAllProducts()
         {
               var result = (from product in db.AB_Product
                                .....
                             select new ProductTableViewModel
                             {
                             .....     
                             }).ToList();

               return result;
         }
 }

然后尝试根据需要更改ViewModel

public class DashboardViewModel
{
    public List<ProductTableViewModel> ProductTable;

    public NewProductViewModel NewProduct;

    public DiscussionsViewModel Discussions;
}