0

我正在使用 MVC3 和实体框架

我有一张桌子:

id - 星期几 - 肌肉 - 组数 - 客户

这是一张桌子……这只是一个简单的小项目。

但我的问题是我不知道如何获得正确的视图。

  **Monday    Tuesday    Wednesday   Thursday   Friday   Saturday   Sunday**
    Muscle    Muscle     etc...
    sets      sets

我认为我应该做的...首先获取客户(他创建的)想要锻炼的天数列表

模型

Fitnessday 是一个属性,它通过 datacontext 与我的数据库连接。

很喜欢

   public class FitnessDay
  {
    public int id { get; set; }
    public string dayoftheweek{ get; set; }
    public string muscle{ get; set; }
    public Nullable<int> sets{ get; set; }
    public Nullable<int> customerId{ get; set; }


     public virtual Customer Customers{ get; set; }
  }

  public class Customer 
   {
    public Customer()
    {
        this.fitnessDay = new HashSet<fitnessDay>();
    }

    // Primitive properties

    public int id { get; set; }
    public string name{ get; set; }
    public string lastname{ get; set; }

    // Navigation properties

    public virtual ICollection<fitnessDay> fitnessDay { get; set; }

 }

-

    private IList<fitnessDay> trainingList= null;

          public IList<fitnessDay> Training() 
       {
           string nameOfCustomer= "bob";
           var Training1 = db.fitness.Where(c => c.Customer.name== nameOfCustomer); 

           trainingList= Training1.ToList();
           return trainingList;

       }

控制器

        public ViewResult TrainingView()
    {
        var list = model.training();

        return View(list); 
    }

看法

   Don't know how to show it here.

有人可以帮我找出星期几并放置适当的肌肉并放在它下面(每天可能有几块肌肉)

编辑:添加了新信息

4

1 回答 1

0

这是为了显示元素周期表而创建的,但它是一个很棒的 ui http://isotope.metafizzy.co/ 它确实需要相当多的 jquery 知识,但同样,它是一个很好的 ui,适应性很强。也就是说,当然,如果您正在寻找比日历更多的东西。

编辑 由于 jquery 真的不是你的事,我认为这是一个简单的建议。在控制器端,加载所有培训课程 ORDER ASC(我不知道如何使用 Linq,但肯定可以完成)。我还假设您知道您要查询的培训日期之间的日期。所以在控制器中你会聚集这样的日期:

    public ActionResult Trainings()
    {
        //dummy data
        var trainings = new List<Training>();
        trainings.Add(new Training { TrainingDay = DateTime.Now });

        var week = new Dictionary<DayOfWeek, List<Training>>() 
        { 
            { DayOfWeek.Monday, new List<Training>() },
            { DayOfWeek.Tuesday, new List<Training>() },
            { DayOfWeek.Wednesday, new List<Training>() },
            { DayOfWeek.Thursday, new List<Training>() },
            { DayOfWeek.Friday, new List<Training>() },
            { DayOfWeek.Saturday, new List<Training>() },
            { DayOfWeek.Sunday, new List<Training>() },
        };
        for (int i = 0; i < trainings.Count; i++) 
        {
            switch (trainings[i].TrainingDay.DayOfWeek)
            {
                case DayOfWeek.Friday:
                    week[DayOfWeek.Friday].Add(trainings[i]);
                    break;
                case DayOfWeek.Monday:
                    week[DayOfWeek.Monday].Add(trainings[i]);
                    break;
                case .....

            }
        }
        return View(week);
    }

这将使所有训练都在同一天进行(我听说有些人一天去健身房的次数更多,不确定这是不是真的)。现在,您可以让视图强类型化,因此您可以将其更改为:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Dictionary<DayOfWeek, List<Training>>>" %> 

并且不要忘记<%@ Import %>培训namespace,最后你看到的可能是这样的:

   <table>
        <tr>
            <td>Monday</td>
            <td>Tuesday</td>
            <td>Wednesday</td>
            <td>Thursday</td>
            <td>Friday</td>
            <td>Saturday</td>
            <td>Sunday</td>
        </tr>
        <tr>
            <%foreach (KeyValuePair<DayOfWeek, List<Training>> entry in Model){%>
                <td>
                    <%if (entry.Key == DayOfWeek.Monday){
                       foreach (var training in entry.Value){
                        Response.Write(training.TrainingDay); 
                       } 
                    }%> 
                </td>
            <%} %>
        </tr>
   </table>

显然,您可以为 Html 对象创建扩展方法,而不是为条目重复相同的代码。

于 2012-04-16T20:03:06.627 回答