2015-07-05 2 views
0

У меня есть вид списка, который заполняется с помощью этого контроллера:Список Заполнение с соответствующей информацией

 public ActionResult ListClubMembershipType(int clubId) 
    { 
     //Populate the list 
     var types = from s in db.MembershipTypes 
        where (s.ClubId == clubId) 
        orderby s.Type 
        select s; 
     ViewBag.typesCount = types.Count(); 
     var model = types.Select(t => new ListMembershipTypeViewModel    
    { 
     Type = t.Type, 
     ClubId = clubId, 
     Cost = t.Cost, 
     ReducedCost = t.ReducedCost, 
     MinAge = t.MinAge, 
     MaxAge = t.MaxAge, 
    }); 

     return PartialView("_ListClubMembershipType", model); 
    } 

Я также хотел бы, чтобы заполнить переменную в модели представления под названием ReducedDate с данными тянули из двух других таблиц, День & Месяц.

Ive пытался следующую строку:

  ReducedDate = db.Days.Find(t.DayId).DayNum + "/" + db.Months.Find(t.MonthId).MonthName, 

, но он дает следующее сообщение об ошибке:

Дополнительная информация: Метод 'GRCWebApp.Models.Day Найти (System.Object [])' объявленную от типа 'System.Data.Entity.DbSet1 [GRCWebApp.Models.Day]' не может быть вызван с экземпляром типа 'System.Data.Entity.Core.Objects.ObjectQuery1 [GRCWebApp.Models.Day]'

Что такое правильный способ ссылки на данные?

Модели являются:

MembershipType

public int MembershipTypeId { get; set; } 

[StringLength(150)] 
[Column(TypeName = "nvarchar")] 
public String Type { get; set; } 

[StringLength(350)] 
[Column(TypeName = "nvarchar")] 
public String Description { get; set; } 

[Column(TypeName = "int")] 
public int ClubId { get; set; } 

[Column(TypeName = "decimal")] 
public Decimal Cost { get; set; } 

[Column(TypeName = "decimal")] 
public Decimal ReducedCost { get; set; } 

[Column(TypeName = "int")] 
public int? DayId { get; set; } 

[Column(TypeName = "int")] 
public int? MonthId { get; set; } 

[Column(TypeName = "int")] 
public int MinAge { get; set; } 

[Column(TypeName = "int")] 
public int MaxAge { get; set; } 

[Column(TypeName = "bit")] 
public bool? Dormant { get; set; } 
} 

The Day Model:

public class Day 
{ 
public int DayId { get; set; } 

[Column(TypeName = "int")] 
public int DayNum { get; set; } 

public virtual ICollection<MembershipType> MembershipTypes { get; set; } 
} 

Месяц Модель:

public class Month 
{ 
public int MonthId { get; set; } 

[Column(TypeName = "nvarchar")] 
public String MonthName { get; set; } 

public virtual ICollection<MembershipType> MembershipTypes { get; set; } 
} 

И ViewModel является:

public class ListMembershipTypeViewModel 
{ 
[Display(Name = "Type")] 
public String Type { get; set; } 

public int ClubId { get; set; } 

[Display(Name = "Full Cost")] 
public Decimal Cost { get; set; } 

[Display(Name = "Reduced Cost")] 
public Decimal ReducedCost { get; set; } 

[Display(Name = "Reduced From")] 
public string ReducedDate { get; set; } 

[Display(Name = "Min Age")] 
public int MinAge { get; set; } 

[Display(Name = "Max Age")] 
public int MaxAge { get; set; } 
} 

ответ

1

Вы DayId и MonthId на вашем MembershipType, но не обладают свойствами public Day Day {get;set;} и public Month Month {get;set;}

Если вы имели те свойства, которые вы могли бы просто использовать ReducedDate = t.Day.DayNum + "/" + t.Month.MonthName

Это может дать вам ошибку поскольку DayNum - это int, поэтому вам нужно будет преобразовать DayNum в string. Вы можете использовать SqlFunctions.StringConvert((double)t.Day.DayNum) для этого.

+0

Пятно на большое спасибо –

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