首页 > 解决方案 > ASP.NET MVC:访问对象属性

问题描述

在此处输入图像描述我正在将特定模型的代码转换为通用(所有模型都将被接受)版本,因此我正在转换我的标签边框,但我无法访问模型中的数据,因为我正在像这样访问它们:

worksheet.Cells["A" + index].Value = temp[i - 2].CarID.ToString();

但现在我将此访问权限转换为以下内容:

worksheet.Cells[L + index].Value = temp[i - 2].names[j].ToString();

但它不起作用。我了解第一个访问对象值,但第二个尝试访问不同的对象值,那么如何访问该对象值?我已经完成了这个函数的完整代码,你能给我一些关于这种情况的想法吗?感谢帮助

public void EEPCreateExcelGeneric(ReportRange reportRange)
{
    using (ExcelPackage excel = new ExcelPackage())
    {
        // var temp = db.Database.SqlQuery<CarsTrxViewModel>(SqlCars.CarsTrxByID()).ToList();
        var temp = db.Cars.ToList();
        Cars cars = new Cars();
        // var properties = temp.GetType().GetProperties();
        var names = new List<string>();

        var properties = cars.GetType().GetProperties();

        foreach (var item in properties)
        {
            var attribute = (DisplayNameAttribute)item.GetCustomAttribute(typeof(DisplayNameAttribute), true);

            if (attribute != null)
            {
                names.Add(attribute.DisplayName);
            }
            else
            {
                names.Add(item.Name);
            }
        }

        // System.Diagnostics.Debug.WriteLine(properties);

        DateTime startdate = reportRange.StartDate;// ?? new DateTime(2000, 10, 10, 1, 1, 1, 1);
        DateTime enddate = reportRange.EndDate;// ?? DateTime.Now;
        DateTime now = DateTime.Now;

        string date = now.ToShortDateString();
        string time = now.ToLongTimeString();
        date = date + "-" + time;

        // modeli çekerken db de temizlersek çok daha hızlı olur 
        foreach (var item in temp.ToList())
        {
            if (item.CreateDate < startdate || item.CreateDate > enddate)
            {
                temp.Remove(item);
            }
        }

        int RowRange = temp.Count();
        string name = "Report_";
        date = date.Replace(" ", "_");
        date = date.Replace(",", "_");
        date = date.Replace(":", "-");
        date = date.Replace("/", "_");

        string sonu = ".xls";
        date += sonu;
        name += date;

        ExcelRecords m = new ExcelRecords();
        m.IsExist = false;
        m.CreateDate = now;
        m.EndDate = enddate;
        m.StartDate = startdate;
        m.GuidName = name;

        db.ExcelRecords.Add(m);
        db.SaveChanges();

        excel.Workbook.Worksheets.Add("Worksheet1");
        var worksheet = excel.Workbook.Worksheets["worksheet1"];

        //worksheet.Cells["A1"].Value = "CarID";
        //worksheet.Cells["B1"].Value = "CarBrand";
        //worksheet.Cells["C1"].Value = "CarModel";
        //worksheet.Cells["D1"].Value = "CreateDate";
        //worksheet.Cells["A1"].Style.Font.Bold = true;
        //worksheet.Cells["B1"].Style.Font.Bold = true;
        //worksheet.Cells["C1"].Style.Font.Bold = true;
        //worksheet.Cells["D1"].Style.Font.Bold = true;
        for (int i = 0; i < names.Count(); i++)
        {
            string L = (Convert.ToChar(65+i)).ToString();
            L += "1";
            System.Diagnostics.Debug.WriteLine(L);
            worksheet.Cells[L].Value = names[i];
            worksheet.Cells[L].Style.Font.Bold = true;
        }

        for (int i = 2; i < (RowRange + 2); i++)
        {
            /*
            string L = (Convert.ToChar(63 + i)).ToString();
            string index = i.ToString();
            worksheet.Cells[L + index].Value = temp[i - 2].CarID.ToString();
            worksheet.Cells[L + index].Value = temp[i - 2].CarBrand.ToString();
            worksheet.Cells[L + index].Value = temp[i - 2].CarModel.ToString();
            worksheet.Cells[L + index].Value = temp[i - 2].CreateDate.ToString();
            */
            string index = i.ToString();

            for (int j = 0; j < names.Count; j++)
            {
                string L = (Convert.ToChar(65 + j)).ToString();
                worksheet.Cells[L + index].Value = temp[i - 2].names[j].ToString();//<=
// its not working what is right way for doing this
            }

            worksheet.Cells["A" + index].Value = temp[i - 2].CarID.ToString();
            worksheet.Cells["B" + index].Value = temp[i - 2].CarBrand.ToString();
            worksheet.Cells["C" + index].Value = temp[i - 2].CarModel.ToString();
            worksheet.Cells["D" + index].Value = temp[i - 2].CreateDate.ToString();
        }                

        worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();

        string path = Path.Combine(Server.MapPath("~/"), ("Reports\\" + name));

        FileInfo excelFile = new FileInfo(path);
        excel.SaveAs(excelFile);

        var bull = db.ExcelRecords.SingleOrDefault(b => b.GuidName == name);

        if (bull != null)
        {
            bull.IsExist = true;
            db.SaveChanges();
        }
    }
}

标签: c#asp.net-mvc

解决方案


推荐阅读