如何让我的视图看起来像一个时间表

时间:2012-04-16 19:48:54

标签: c# asp.net-mvc asp.net-mvc-3 entity-framework

我正在使用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.

有人可以帮助我获得一周中的哪一天并放置适当的肌肉并放在它下面(每天可能有几块肌肉)

编辑:添加了新信息

1 个答案:

答案 0 :(得分:0)

这是为了显示周期表而创建的,但它是一个很棒的ui http://isotope.metafizzy.co/ 它确实需要相当多的jquery知识,但同样,它是一个非常适应的ui。 那当然,如果你正在寻找一些日历的东西。

修改 既然jquery真的不是你的东西,我认为这是一个简单的建议。 在控制器端,加载所有训练课程ORDER ASC(我不知道如何使用Linq,但肯定可以完成)。我也假设你知道你所查询的trawn的BETWEEN日期。 因此,在控制器中,您可以像这样聚集日期:

    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对象创建扩展方法,而不是为条目重复相同的代码。