MVC 4 CONTROLER - 使用动态STAFFID是的&安培; BusinessID的而不是硬codeD的人 [英] MVC 4 controler - using dynamic StaffID's & BusinessID's instead of hard coded ones

查看:126
本文介绍了MVC 4 CONTROLER - 使用动态STAFFID是的&安培; BusinessID的而不是硬codeD的人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我建立一个在线预订系统,使人们可以在网上预定医生预约。我粗略建立我的MVC 4控制器,以便我可以,我有获得可用约会每位医生的存储过程进行测试。

下面你会看到,我已经很难$ C $ 10 CD医生控制器,但我需要从一个URL和放大器拉医生的ID;医生数量可能会有所不同(它可能在第一页上的10名医生,但只有1名医生最后一页)。

请注意:我还需要添加BusinessID到控制器&放大器;存储过程,因为每个医生可以在多个业务工作。

的URL看起来像(DOC的ID将有2部分:STAFFID是-BusinessID):

<$p$p><$c$c>http://mydomain.com/Bookings?start=2013-01-01&StaffID=1-1&StaffID=2-1&StaffID=3-1&StaffID=4-1&StaffID=5-1&StaffID=6-1

我的问题是:


  1. 如何更改控制器,使医生的ID(STAFFID是的)及BusinessID的可以动态地从URL进行(见上面的例子URL)?

  2. 如何建立动态我的控制器对每个SaffID-BusinessID那就是在URL中的部分(请参阅使用部分的 * 的在评论)?

  3. 如何优化这更好的?

----获取可用时隙控制器----

 公众的ActionResult指数(日期时间?开始)
    {
        如果(!start.HasValue)
        {
            开始= DateTime.Today;
        }        //获取最新的信息(这将永远是7天)
        VAR DAY1 = start.Value.Date;
        变种DAY2 = day1.AddDays(1);
        变种第3天= day1.AddDays(2);
        变种第四天= day1.AddDays(3);
        变种DAY5 = day1.AddDays(4);
        变种DAY6 = day1.AddDays(5);
        变种DAY7 = day1.AddDays(6);        // ***注意:这很难coded到十博士,但必须将能够得到医生一个动态的数额有些可能只在其上几个医生
        //注意:存储过程= SP_GetAvailableAppointments @StaffID INT = 0,@StartDate日期= NULL,@NumberOfDays INT = 1);
        //获取DOC1预约未来7天
        VAR模型1 = db.SP_GetAvailableAppointments(1,启动,1);
        VAR模型2 = db.SP_GetAvailableAppointments(1,第2天,1);
        变种model3 = db.SP_GetAvailableAppointments(1,第3天,1);
        变种model4 = db.SP_GetAvailableAppointments(1,第四天,1);
        变种model5 = db.SP_GetAvailableAppointments(1,DAY5,1);
        变种model6 = db.SP_GetAvailableAppointments(1,DAY6,1);
        变种model7 = db.SP_GetAvailableAppointments(1,第7天,1);        //获取DOC2预约未来7天
        变种model8 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model9 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model10 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model11 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model12 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model13 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model14 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc3的预约未来7天
        变种model15 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model16 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model17 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model18 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model19 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model20 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model21 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取DOC4预约未来7天
        变种model22 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model23 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model24 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model25 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model26 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model27 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model28 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc5预约未来7天
        变种model29 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model30 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model31 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model32 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model33 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model34 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model35 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc6预约未来7天
        变种model36 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model37 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model38 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model39 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model40 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model41 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model42 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc7预约未来7天
        变种model43 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model44 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model45 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model46 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model47 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model48 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model49 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc8预约未来7天
        变种model50 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model51 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model52 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model53 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model54 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model55 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model56 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc9预约未来7天
        变种model57 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model58 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model59 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model60 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model61 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model62 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model63 = db.SP_GetAvailableAppointments(2,第7天,1);        //获取doc10预约未来7天
        变种model64 = db.SP_GetAvailableAppointments(2,DAY1,1);
        变种model65 = db.SP_GetAvailableAppointments(2,DAY2,1);
        变种model66 = db.SP_GetAvailableAppointments(2,第3天,1);
        变种model67 = db.SP_GetAvailableAppointments(2,第四天,1);
        变种model68 = db.SP_GetAvailableAppointments(2,DAY5,1);
        变种model69 = db.SP_GetAvailableAppointments(2,DAY6,1);
        变种model70 = db.SP_GetAvailableAppointments(2,第7天,1);        //新的JSON对象 - myDates
        VAR myDates =新
        {
            DATE1 = day1.ToShortDateString()
            DATE2 = day2.ToShortDateString()
            DATE3 = day3.ToShortDateString(),
            date4 = day4.ToShortDateString(),
            date5 = day5.ToShortDateString(),
            date6 = day6.ToShortDateString(),
            date7 = day7.ToShortDateString(),
            dname1 = day1.DayOfWeek.ToString(),
            dname2 = day2.DayOfWeek.ToString(),
            dname3 = day3.DayOfWeek.ToString(),
            dname4 = day4.DayOfWeek.ToString(),
            dname5 = day5.DayOfWeek.ToString(),
            dname6 = day6.DayOfWeek.ToString(),
            dname7 = day7.DayOfWeek.ToString(),
            ndate = day1.AddDays(7)的ToString(YYYY-MM-DD),接下来//开始日期
            PDATE = day1.AddDays(-7)的ToString(YYYY-MM-DD)// previous开始日期
        };        // ***注意:这很难coded到十博士,但必须将能够得到医生一个动态的数额有些可能只在其上几个医生
        //新的JSON对象 - DOC1
        VAR DOC1 =新
        {
            STAFFID = 1,
            DAY1 = MODEL1,
            DAY2 = MODEL2,
            DAY3 = model3,
            第四天= model4,
            第5天= model5,
            DAY6 = model6,
            第7天= model7
        };        //新的JSON对象 - DOC2
        VAR DOC2 =新
        {
            STAFFID = 2,
            DAY1 = model8,
            DAY2 = model9,
            DAY3 = model10,
            第四天= model11,
            第5天= model12,
            DAY6 = model13,
            第7天= model14
        };        //新的JSON对象 - doc3的
        VAR doc3的新=
        {
            STAFFID是= 3,
            DAY1 = model15,
            DAY2 = model16,
            DAY3 = model17,
            第四天= model18,
            第5天= model19,
            DAY6 = model20,
            第7天= model21
        };        //新的JSON对象 - doc5
        VAR DOC4 =新
        {
            STAFFID = 4,
            DAY1 = model22,
            DAY2 = model23,
            DAY3 = model24,
            第四天= model25,
            第5天= model26,
            DAY6 = model27,
            第7天= model28
        };        //新的JSON对象 - doc5
        VAR doc5 =新
        {
            STAFFID = 5,
            DAY1 = model29,
            DAY2 = model30,
            DAY3 = model31,
            第四天= model32,
            第5天= model33,
            DAY6 = model34,
            第7天= model35
        };        //新的JSON对象 - doc6
        VAR doc6 =新
        {
            STAFFID = 6,
            DAY1 = model36,
            DAY2 = model37,
            DAY3 = model38,
            第四天= model39,
            第5天= model40,
            DAY6 = model41,
            第7天= model42
        };        //新的JSON对象 - doc7
        VAR doc7 =新
        {
            STAFFID = 7,
            DAY1 = model43,
            DAY2 = model44,
            DAY3 = model45,
            第四天= model46,
            第5天= model47,
            DAY6 = model48,
            第7天= model49
        };        //新的JSON对象 - doc8
        VAR doc8 =新
        {
            STAFFID = 8,
            DAY1 = model50,
            DAY2 = model51,
            DAY3 = model52,
            第四天= model53,
            第5天= model54,
            DAY6 = model55,
            第7天= model56
        };        //新的JSON对象 - doc10
        VAR doc9 =新
        {
            = STAFFID 9,
            DAY1 = model57,
            DAY2 = model58,
            DAY3 = model59,
            第四天= model60,
            第5天= model61,
            DAY6 = model62,
            第7天= model63
        };        //新的JSON对象 - doc10
        VAR doc10 =新
        {
            STAFFID = 10,
            DAY1 = model64,
            DAY2 = model65,
            DAY3 = model66,
            第四天= model67,
            第5天= model68,
            DAY6 = model69,
            第7天= model70
        };        //输出JSON的结果
        返回JSON(新
        {
            myDates,
            DOC1,
            DOC2,
            doc3的,
            DOC4,
            doc5,
            doc6,
            doc7,
            doc8,
            doc9,
            doc10
        },JsonRequestBehavior.AllowGet);

---- JSON结果所需----

  {
myDates:{
    日期1:22/02/2013​​,
    日期2:23/02/2013​​,
    DATE3:24/02/2013​​,
    date4:25/02/2013​​,
    date5:26/02/2013​​,
    date6:27/02/2013​​,
    date7:28/02/2013​​,
    dname1:星期五,
    dname2:星期六,
    dname3:星期天,
    dname4:星期一,
    dname5:星期二,
    dname6:周三
    dname7:星期四,
    ndate:2013-03-01,
    PDATE:2013年2月15日
},
DOC1:{
    STAFFID是:1,
    DAY1:[{
        ID:34022,
        STAFFID是:1,
        BusinessID:1,
        SlotDay:星期五,
        SlotTime:{
            滴答:3240亿,
            天:0,
            时间:9,
            毫秒:0,
            纪要:0,
            秒:0,
            TotalDays:0.375,
            TotalHours:9,
            TotalMilliseconds:32400000,
            TotalMinutes:540,
            TotalSeconds:32400
        },
        开始日期:\\ /日期(1325336400000)\\ /
        结束日期:\\ /日期(1577797200000)\\ /
        SlotType:1,
        创建:\\ /日期(1361389440000)\\ /
        CreatedBy:空,
        修改时间:\\ /日期(1361389440000)\\ /
        ModifiedBy:空,
        活动:真实,
        SlotDate:\\ /日期(1361451600000)\\ /
    }]
}
}

---更新:----
我能够从我的控制器得到以下JSON输出,但我需要删除的钥匙&放大器; 价值从myDates&安培; myStaff和组按日期的约会时间 - 例如:DATE0,DATE1,DATE2 ..

  {
myDates:[{
    钥匙:DATE0
    值:23/02/2013
},{
    钥匙:DATE1
    值:24/02/2013
},{
    钥匙:日期2
    值:25/02/2013
},{
    钥匙:DATE3
    值:26/02/2013
},{
    钥匙:date4
    值:27/02/2013
},{
    钥匙:date5
    值:28/02/2013
},{
    钥匙:date6
    值:2013年1月3日
},{
    钥匙:dname0
    值:星期六
},{
    钥匙:dname1
    值:星期天
},{
    钥匙:dname2
    值:星期一
},{
    钥匙:dname3
    值:星期二
},{
    钥匙:dname4
    值:周三
},{
    钥匙:dname5
    值:星期四
},{
    钥匙:dname6
    值:星期五
},{
    钥匙:ndate
    值:2013年3月2日
},{
    钥匙:PDATE
    值:2013年2月16日
}],
myStaff:[{
    钥匙:staff0
    值:
        [{
            slotID用于:42501,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:23/02/2013​​,
            SlotDay:星期六,
            SlotTime:10:00
        },{
            slotID用于:42502,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:23/02/2013​​,
            SlotDay:星期六,
            SlotTime:10:30
        }],
        [{
            slotID用于:47001,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:24/02/2013​​,
            SlotDay:星期天,
            SlotTime:10:00
        },{
            slotID用于:47002,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:24/02/2013​​,
            SlotDay:星期天,
            SlotTime:10:30
        }]
    ]
}]
}

基本上,我需要得到JSON格式如下图所示:

  {
myDates:[{
    DATE0:23/02/2013​​,
    日期1:24/02/2013​​,
    日期2:25/02/2013​​,
    DATE3:26/02/2013​​,
    date4:27/02/2013​​,
    date5:28/02/2013​​,
    date6:2013年1月3日,
    dname0:星期六,
    dname1:星期天,
    dname2:星期一,
    dname3:星期二,
    dname4:周三
    dname5:星期四,
    dname6:星期五,
    ndate:2013年3月2日,
    PDATE:2013年2月16日,
}],
myStaff:[{
    staff0:{[
      DATE0:{[
        [{
            slotID用于:42501,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:23/02/2013​​,
            SlotDay:星期六,
            SlotTime:10:00
        },{
            slotID用于:42502,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:23/02/2013​​,
            SlotDay:星期六,
            SlotTime:10:30
        }],
      日期1:{[
            slotID用于:47001,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:24/02/2013​​,
            SlotDay:星期天,
            SlotTime:10:00
        },{
            slotID用于:47002,
            STAFFID是:1,
            BusinessID:1,
            SlotDate:24/02/2013​​,
            SlotDay:星期天,
            SlotTime:10:30
        }]
    ]}
}]
}]
}

这是我的控制器:

 公众的ActionResult指数(DateTime的开始,字符串ID = NULL)
    {        VAR allids =的Request.QueryString [身份证];        //分裂投入STAFFID含和businessid匿名对象
        从STAFFID变种staffids =在allids.Split(,)选择(X =&GT; x.Split(' - '))。
            选择新{SID = int.Parse(STAFFID是[0]),投标= int.Parse(STAFFID是[1])};        //得到你所需要的天
        变种天= Enumerable.Range(0,7)。选择(X =&GT; start.AddDays(X));        //创建myDates
        INT I = 0;
        VAR myDates =(从第一天在天
                       选择新KeyValuePair&LT;字符串,字符串&GT;(
                          的String.Format(日期{0},我++)
                          day.ToShortDateString()))了ToList();
        I = 0;
        myDates.AddRange(
                      (从日日
                       选择新KeyValuePair&LT;字符串,字符串&GT;(
                          的String.Format(DNAME {0},我++)
                          day.DayOfWeek.ToString()))了ToList())。
        myDates.Add(新KeyValuePair&LT;字符串,字符串方式&gt;(ndate,days.First()AddDays(7)的ToString(YYYY-MM-DD)));
        myDates.Add(新KeyValuePair&LT;字符串,字符串方式&gt;(PDATE,days.First()AddDays(-7)的ToString(YYYY-MM-DD)));        //接收所有stored_procedures
        I = 0;
        VAR myStaff =从staffids人员
                      选择新KeyValuePair&LT;字符串对象&gt;(
                         的String.Format(工作人员{0},我++)
                         (从日日
                          选择db.Database.SqlQuery&LT; GetAvailableAppointments&GT;(EXEC SP_GetAvailableAppointments @StaffID,@BusinessID,@StartDate
                            新的SqlParameter(STAFFID是staff.sid)
                            新的SqlParameter(BusinessID,staff.bid)
                            新的SqlParameter(起始日期,日)))。了ToList()
                     );        返回JSON(新{myDates,myStaff},JsonRequestBehavior.AllowGet);    }

任何帮助将是AP preciated:)


解决方案

也许你也想使用MVC路由对于这一点,添加新的路由(有一个ScheduleController)

  //添加UrlParameter.Optional这样你就可以设置默认值
routes.MapRoute(
    名称:时间表,
    网址:计划/获取/ {开始} / {ID}
    默认:新{
                   控制器=时间表,
                   行动=指数,
                   开始= UrlParameter.Optional,
                   ID = UrlParameter.Optional
              }
);

这样,你可以只调用操作方法与URL像

  http://mydomain.com/Bookings/Get/2013-2-23/1-3,2-5

如果控制器动作指数有签名

 公众的ActionResult指数(日期时间?开始,字符串ID =)

MVCS模型绑定,然后将绑定PARAMS从URL自动签名变量。

在你的模型文件夹MyJsonModels.cs创建一个模型,并用生命填充...

 公共类数值指明MyDate
{
    公共字符串ndate {搞定;组; }
    公共MyDateNDay [] {日期搞定;组; }
    公共字符串PDATE {搞定;组; }
}公共类MyDateNDay {
    公共字符串日期{搞定;组;}
    公共字符串一天{搞定;组; }
}公共类Mystaff
{
    公众人员[] {员工获得;组; }
}公共类人员
{
    公众诠释{STAFFID获得;组; }
    公众诠释BusinessID {搞定;组; }
    公共SlotDate [] {SlotDates获得;组; }
}公共类SlotDate
{
    公共字符串日期{搞定;组; }
    公共字符串SlotDay {搞定;组; }
    公共时隙[] {插槽得到;组; }
}公共类时隙
{
    公众诠释slotID用于{搞定;组; }
    公共字符串SlotTime {搞定;组; }
}公共类InputData
{
    公众诠释slotID用于{搞定;组; }
    公众诠释{STAFFID获得;组; }
    公众诠释BusinessID {搞定;组; }
    公众的DateTime SlotDate {搞定;组; }
    公共字符串SlotDay {搞定;组; }
    公共字符串SlotTime {搞定;组; }    公共InputData(INT SID,诠释STID,诠释投标,日期一天,串时间)
    {
        slotID用于= SID;
        = STAFFID STID;
        BusinessID =投标;
        SlotDate =日;
        SlotDay = day.DayOfWeek.ToString();
        SlotTime =时间;
    }
}

那么索引方法中你就必须实现真正的行动......(这不会产生你所要求的确切的结果,我只是告诉你如何使用LINQ为了简化您的code和去除冗余。也许你会使用自创建的对象,而不是存储使用KeyValuePairs的结果。同样,它只是一个快,但工作的例子)

 公众的ActionResult指数(日期时间?开始,字符串ID =)
    {        VAR STARTDATE =启动? DateTime.Today;        //分裂投入STAFFID含和businessid匿名对象
        从STAFFID变种staffids =在id.Split(,)选择(X =&GT; x.Split(' - '))。
                       选择新{SID = int.Parse(STAFFID是[0]),投标= int.Parse(STAFFID是[1])};        //得到你所需要的天
        变种天= Enumerable.Range(0,7)。选择(X =&GT; startdate.AddDays(X));        //创建myDates
        INT I = 0;
        数值指明MyDate MyDates =新数值指明MyDate(){
            ndate = days.First()。AddDays(7)的ToString(YYYY-MM-DD),
            PDATE = days.First()。AddDays(-7)的ToString(YYYY-MM-DD),
            日期=(
                        从第一天的日子
                            选择新MyDateNDay {
                               日期= day.ToShortDateString()
                               天= day.DayOfWeek.ToString()
                            }
                    ).ToArray()
        };        //例如InputData - 阵列,因为它可能由SQL过程返回
        / *我说这个数组来模拟一个可能的程序导致您的数据库可以返回,
           也许你甚至可以添加一个能返回数据,就像在一个新的程序
           下面的数组
        * /
        VAR输入=新[] {
           新InputData(40501,1,1,新的日期时间(2013,02,20),09:00),
           新InputData(40502,1,2,新的日期时间(2013,02,20),11:00),
           新InputData(42501,1,3,新的DateTime(2013,02,23),10:00),
           新InputData(42502,1,3,新的DateTime(2013,02,23),10:30),
           新InputData(45001,2,3,新的DateTime(2013,02,21),13:00),
           新InputData(45002,2,4,新的DateTime(2013,02,22),15:30),
           新InputData(47001,2,5,新的日期时间(2013,02,24),10:00),
           新InputData(47002,2,5,新的日期时间(2013,02,24),10:30),
        };        //接收所有stored_procedures
        I = 0;
        Mystaff MyStaff =新Mystaff()
        {
            工作人员=(从staffids人员
                     选择新员工()
                     {
                         = STAFFID staff.sid,
                         BusinessID = staff.bid,
                         SlotDates =(从第一天在天
                                      选择新SlotDate()
                                      {
                                          日期= day.ToShortDateString()
                                          SlotDay = day.DayOfWeek.ToString(),
                                          插槽=(从结果输入
                                                    其中,适合要求//过滤器插槽
                                                        天== result.SlotDate
                                                        &功放;&安培; result.StaffID == staff.sid
                                                        &功放;&安培; result.BusinessID == staff.bid
                                                   选择新的时隙()
                                                   {
                                                       slotID用于= result.SlotID,
                                                       SlotTime = result.SlotTime
                                                   }
                                                  ).ToArray()
                                      }
                                     //滤除天没有空闲插槽
                                     )。凡(X =&GT; x.slots.Length大于0).ToArray()
                     }
                    ).ToArray()
        };
        返回JSON(新{MyDates,MyStaff},JsonRequestBehavior.AllowGet);    }
}

此操作 - 方法将返回以下JSON

  {
    MyDates:
    {
        ndate:2013年3月2日,
        日期: [
            {
                日期:2013年2月23日,天:星期六
            },{
                日期:2013年2月24日,天:星期天
            },{
                日期:2013年2月25日,天:星期一
            },{
                日期:2013年2月26日,天:星期二
            },{
                日期:2013年2月27日,天:周三
            },{
                日期:2013年2月28日,天:星期四
            },{
                日期:2013年3月1日,天:星期五
            }],
        PDATE:2013年2月16日
    },
    MyStaff:
        {
            参谋:
                {
                    STAFFID是:1,
                    BusinessID:3,
                    SlotDates:[
                        {
                            日期:2013年2月23日
                            SlotDay:星期六,
                            插槽:[
                                {slotID用于:42501,SlotTime:10:00},
                                {slotID用于:42502,SlotTime:10:30}
                            ]
                        }]
                },{
                    STAFFID是:2,
                    BusinessID:5,
                    SlotDates:[
                        {
                            日期:2013年2月24日
                            SlotDay:星期天,
                            插槽:[
                                {slotID用于:47001,SlotTime:10:00},
                                {slotID用于:47002,SlotTime:10:30}
                            ]
                        }
                    ]
                }
            ]
        }
};

我同意,这不正是你问什么......但看看它,它实际上是你想要的...它只是我冒昧地去除冗余
在JavaScript中,您可以通过数据轻松地步行到显示。使用辅助的模型像上面MyJsonClasses帮助你设计JSON-输出你想要的方式很多。

那么我希望我没有忘记什么。

I am building an online booking system so that people can book doctor appointments online. I have roughly built my MVC 4 controller so that I can test it with the stored procedure that I have to get the available appointments for each doctor.

Below you will see that I have hard coded 10 doctors in the controller but I will need to pull the doctor ID's from a URL & the number of doctors may vary (it may have 10 doctors on the first page but only 1 doctor on the last page).

NOTE: I will also need to add "BusinessID" to the controller & the stored procedure as each doctor can work at multiple businesses.

The URL will look something like (DOC ID's will have 2 parts: StaffID-BusinessID):

http://mydomain.com/Bookings?start=2013-01-01&StaffID=1-1&StaffID=2-1&StaffID=3-1&StaffID=4-1&StaffID=5-1&StaffID=6-1

My questions are:

  1. How can I change the controller so that the Doctors ID's (StaffID's) & BusinessID's can be done dynamically from a url (see example URL above)?
  2. How can I build the parts in my controller dynamically for each SaffID-BusinessID that is in the URL (see the parts with * in the comments)?
  3. How I can optimize this better?

----Get Available Time Slots Controller----

        public ActionResult Index(DateTime? start)
    {
        if (!start.HasValue )
        {
            start = DateTime.Today;
        }

        //get date information (this will always be 7 days)
        var day1 = start.Value.Date;
        var day2 = day1.AddDays(1);
        var day3 = day1.AddDays(2);
        var day4 = day1.AddDays(3);
        var day5 = day1.AddDays(4);
        var day6 = day1.AddDays(5);
        var day7 = day1.AddDays(6);

        //***NOTE: THIS IS HARD CODED TO TEN DOCTORS BUT WILL NEED TO BE ABLE TO GET A DYNAMIC AMOUNT OF DOCTORS AS SOME PAGES MAY ONLY HAVE A FEW DOCTORS ON IT
        //NOTE: Stored Procedure = SP_GetAvailableAppointments @StaffID int = 0, @StartDate Date = NULL, @NumberOfDays INT = 1);
        //get doc1 appointments for the next 7 days
        var model1 = db.SP_GetAvailableAppointments(1, start, 1);
        var model2 = db.SP_GetAvailableAppointments(1, day2, 1);
        var model3 = db.SP_GetAvailableAppointments(1, day3, 1);
        var model4 = db.SP_GetAvailableAppointments(1, day4, 1);
        var model5 = db.SP_GetAvailableAppointments(1, day5, 1);
        var model6 = db.SP_GetAvailableAppointments(1, day6, 1);
        var model7 = db.SP_GetAvailableAppointments(1, day7, 1);

        //get doc2 appointments for the next 7 days
        var model8 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model9 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model10 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model11 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model12 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model13 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model14 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc3 appointments for the next 7 days
        var model15 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model16 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model17 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model18 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model19 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model20 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model21 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc4 appointments for the next 7 days
        var model22 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model23 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model24 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model25 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model26 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model27 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model28 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc5 appointments for the next 7 days
        var model29 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model30 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model31 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model32 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model33 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model34 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model35 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc6 appointments for the next 7 days
        var model36 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model37 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model38 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model39 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model40 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model41 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model42 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc7 appointments for the next 7 days
        var model43 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model44 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model45 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model46 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model47 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model48 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model49 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc8 appointments for the next 7 days
        var model50 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model51 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model52 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model53 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model54 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model55 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model56 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc9 appointments for the next 7 days
        var model57 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model58 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model59 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model60 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model61 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model62 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model63 = db.SP_GetAvailableAppointments(2, day7, 1);

        //get doc10 appointments for the next 7 days
        var model64 = db.SP_GetAvailableAppointments(2, day1, 1);
        var model65 = db.SP_GetAvailableAppointments(2, day2, 1);
        var model66 = db.SP_GetAvailableAppointments(2, day3, 1);
        var model67 = db.SP_GetAvailableAppointments(2, day4, 1);
        var model68 = db.SP_GetAvailableAppointments(2, day5, 1);
        var model69 = db.SP_GetAvailableAppointments(2, day6, 1);
        var model70 = db.SP_GetAvailableAppointments(2, day7, 1);

        //new Json Object - myDates
        var myDates = new 
        {
            date1 = day1.ToShortDateString(),
            date2 = day2.ToShortDateString(),
            date3 = day3.ToShortDateString(),
            date4 = day4.ToShortDateString(),
            date5 = day5.ToShortDateString(),
            date6 = day6.ToShortDateString(),
            date7 = day7.ToShortDateString(),
            dname1 = day1.DayOfWeek.ToString(),
            dname2 = day2.DayOfWeek.ToString(),
            dname3 = day3.DayOfWeek.ToString(),
            dname4 = day4.DayOfWeek.ToString(),
            dname5 = day5.DayOfWeek.ToString(),
            dname6 = day6.DayOfWeek.ToString(),
            dname7 = day7.DayOfWeek.ToString(),
            ndate = day1.AddDays(7).ToString("yyyy-MM-dd"), //next start date
            pdate = day1.AddDays(-7).ToString("yyyy-MM-dd") //previous start date
        };

        //***NOTE: THIS IS HARD CODED TO TEN DOCTORS BUT WILL NEED TO BE ABLE TO GET A DYNAMIC AMOUNT OF DOCTORS AS SOME PAGES MAY ONLY HAVE A FEW DOCTORS ON IT
        //new Json Object - doc1
        var doc1 = new
        {
            staffid = 1,
            day1 = model1,
            day2 = model2,
            day3 = model3,
            day4 = model4,
            day5 = model5,
            day6 = model6,
            day7 = model7
        };

        //new Json Object - doc2
        var doc2 = new
        {
            staffid = 2,
            day1 = model8,
            day2 = model9,
            day3 = model10,
            day4 = model11,
            day5 = model12,
            day6 = model13,
            day7 = model14
        };

        //new Json Object - doc3
        var doc3 = new
        {
            staffid = 3,
            day1 = model15,
            day2 = model16,
            day3 = model17,
            day4 = model18,
            day5 = model19,
            day6 = model20,
            day7 = model21
        };

        //new Json Object - doc5
        var doc4 = new
        {
            staffid = 4,
            day1 = model22,
            day2 = model23,
            day3 = model24,
            day4 = model25,
            day5 = model26,
            day6 = model27,
            day7 = model28
        };

        //new Json Object - doc5
        var doc5 = new
        {
            staffid = 5,
            day1 = model29,
            day2 = model30,
            day3 = model31,
            day4 = model32,
            day5 = model33,
            day6 = model34,
            day7 = model35
        };

        //new Json Object - doc6
        var doc6 = new
        {
            staffid = 6,
            day1 = model36,
            day2 = model37,
            day3 = model38,
            day4 = model39,
            day5 = model40,
            day6 = model41,
            day7 = model42
        };

        //new Json Object - doc7
        var doc7 = new
        {
            staffid = 7,
            day1 = model43,
            day2 = model44,
            day3 = model45,
            day4 = model46,
            day5 = model47,
            day6 = model48,
            day7 = model49
        };

        //new Json Object - doc8
        var doc8 = new
        {
            staffid = 8,
            day1 = model50,
            day2 = model51,
            day3 = model52,
            day4 = model53,
            day5 = model54,
            day6 = model55,
            day7 = model56
        };

        //new Json Object - doc10
        var doc9 = new
        {
            staffid = 9,
            day1 = model57,
            day2 = model58,
            day3 = model59,
            day4 = model60,
            day5 = model61,
            day6 = model62,
            day7 = model63
        };

        //new Json Object - doc10
        var doc10 = new
        {
            staffid = 10,
            day1 = model64,
            day2 = model65,
            day3 = model66,
            day4 = model67,
            day5 = model68,
            day6 = model69,
            day7 = model70
        };

        //Output the Json results
        return Json(new
        {
            myDates,
            doc1,
            doc2,
            doc3,
            doc4,
            doc5,
            doc6,
            doc7,
            doc8,
            doc9,
            doc10
        }, JsonRequestBehavior.AllowGet);

----The JSON Result Required----

{
"myDates": {
    "date1": "22/02/2013",
    "date2": "23/02/2013",
    "date3": "24/02/2013",
    "date4": "25/02/2013",
    "date5": "26/02/2013",
    "date6": "27/02/2013",
    "date7": "28/02/2013",
    "dname1": "Friday",
    "dname2": "Saturday",
    "dname3": "Sunday",
    "dname4": "Monday",
    "dname5": "Tuesday",
    "dname6": "Wednesday",
    "dname7": "Thursday",
    "ndate": "2013-03-01",
    "pdate": "2013-02-15"
},
"doc1": {
    "staffid": 1,
    "day1": [{
        "ID": 34022,
        "StaffID": 1,
        "BusinessID": 1,
        "SlotDay": "Friday",
        "SlotTime": {
            "Ticks": 324000000000,
            "Days": 0,
            "Hours": 9,
            "Milliseconds": 0,
            "Minutes": 0,
            "Seconds": 0,
            "TotalDays": 0.375,
            "TotalHours": 9,
            "TotalMilliseconds": 32400000,
            "TotalMinutes": 540,
            "TotalSeconds": 32400
        },
        "StartDate": "\/Date(1325336400000)\/",
        "EndDate": "\/Date(1577797200000)\/",
        "SlotType": 1,
        "Created": "\/Date(1361389440000)\/",
        "CreatedBy": null,
        "Modified": "\/Date(1361389440000)\/",
        "ModifiedBy": null,
        "Active": true,
        "SlotDate": "\/Date(1361451600000)\/"
    }]
}
}

---UPDATE:---- I am able to get the following json output from my controller but I need to remove the "key" & "value" from myDates & myStaff, and group the appointment times by date - eg: date0, date1, date2..

{
"myDates": [{
    "Key": "date0",
    "Value": "23/02/2013"
}, {
    "Key": "date1",
    "Value": "24/02/2013"
}, {
    "Key": "date2",
    "Value": "25/02/2013"
}, {
    "Key": "date3",
    "Value": "26/02/2013"
}, {
    "Key": "date4",
    "Value": "27/02/2013"
}, {
    "Key": "date5",
    "Value": "28/02/2013"
}, {
    "Key": "date6",
    "Value": "1/03/2013"
}, {
    "Key": "dname0",
    "Value": "Saturday"
}, {
    "Key": "dname1",
    "Value": "Sunday"
}, {
    "Key": "dname2",
    "Value": "Monday"
}, {
    "Key": "dname3",
    "Value": "Tuesday"
}, {
    "Key": "dname4",
    "Value": "Wednesday"
}, {
    "Key": "dname5",
    "Value": "Thursday"
}, {
    "Key": "dname6",
    "Value": "Friday"
}, {
    "Key": "ndate",
    "Value": "2013-03-02"
}, {
    "Key": "pdate",
    "Value": "2013-02-16"
}],
"myStaff": [{
    "Key": "staff0",
    "Value": [
        [{
            "SlotID": 42501,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "23/02/2013",
            "SlotDay": "Saturday",
            "SlotTime": "10:00"
        }, {
            "SlotID": 42502,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "23/02/2013",
            "SlotDay": "Saturday",
            "SlotTime": "10:30"
        }],
        [{
            "SlotID": 47001,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "24/02/2013",
            "SlotDay": "Sunday",
            "SlotTime": "10:00"
        }, {
            "SlotID": 47002,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "24/02/2013",
            "SlotDay": "Sunday",
            "SlotTime": "10:30"
        }]
    ]
}]
}

basically, I need to get the json formatted like below:

{
"myDates": [{
    "date0": "23/02/2013",
    "date1": "24/02/2013",
    "date2": "25/02/2013",
    "date3": "26/02/2013",
    "date4": "27/02/2013",
    "date5": "28/02/2013",
    "date6": "1/03/2013",
    "dname0": "Saturday",
    "dname1": "Sunday",
    "dname2": "Monday",
    "dname3": "Tuesday",
    "dname4": "Wednesday",
    "dname5": "Thursday",
    "dname6": "Friday",
    "ndate": "2013-03-02",
    "pdate": "2013-02-16",
}],
"myStaff": [{
    "staff0": {[ 
      "date0": {[
        [{
            "SlotID": 42501,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "23/02/2013",
            "SlotDay": "Saturday",
            "SlotTime": "10:00"
        }, {
            "SlotID": 42502,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "23/02/2013",
            "SlotDay": "Saturday",
            "SlotTime": "10:30"
        }],
      "date1": {[
            "SlotID": 47001,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "24/02/2013",
            "SlotDay": "Sunday",
            "SlotTime": "10:00"
        }, {
            "SlotID": 47002,
            "StaffID": 1,
            "BusinessID": 1,
            "SlotDate": "24/02/2013",
            "SlotDay": "Sunday",
            "SlotTime": "10:30"
        }]
    ]}
}]
}]
}

This is my controller:

        public ActionResult Index(DateTime start, string id = null)
    {

        var allids = Request.QueryString["id"];

        // split the input into anonymous objects containing staffid and businessid
        var staffids = from staffid in allids.Split(',').Select(x => x.Split('-'))
            select new { sid = int.Parse(staffid[0]), bid = int.Parse(staffid[1]) };

        // get the days you need
        var days = Enumerable.Range(0, 7).Select(x => start.AddDays(x));

        // create myDates
        int i = 0;
        var myDates = (from day in days
                       select new  KeyValuePair<string, string>(
                          String.Format("date{0}", i++),
                          day.ToShortDateString())).ToList();
        i = 0;
        myDates.AddRange(
                      (from day in days
                       select new  KeyValuePair<string, string>(
                          String.Format("dname{0}", i++),
                          day.DayOfWeek.ToString())).ToList());
        myDates.Add(new KeyValuePair<string, string>("ndate", days.First().AddDays(7).ToString("yyyy-MM-dd")));
        myDates.Add(new KeyValuePair<string, string>("pdate", days.First().AddDays(-7).ToString("yyyy-MM-dd")));

        // receive all the stored_procedures
        i = 0;
        var myStaff = from staff in staffids
                      select new KeyValuePair<string, object>(
                         String.Format("staff{0}", i++),
                         (from day in days
                          select db.Database.SqlQuery<GetAvailableAppointments>("EXEC SP_GetAvailableAppointments @StaffID, @BusinessID, @StartDate",
                            new SqlParameter("StaffID", staff.sid),
                            new SqlParameter("BusinessID", staff.bid),
                            new SqlParameter("StartDate", day))).ToList()
                     );

        return Json(new { myDates, myStaff }, JsonRequestBehavior.AllowGet);

    }

Any help would be appreciated :)

解决方案

maybe you also want to use mvc routing for this, add a new route (having a ScheduleController)

//Added UrlParameter.Optional so you can set Default values
routes.MapRoute(
    name: "Schedule",
    url: "Schedule/Get/{start}/{id}",
    defaults: new { 
                   controller = "Schedule", 
                   action = "index", 
                   start = UrlParameter.Optional, 
                   id = UrlParameter.Optional 
              }
);

That way you can just call the action method with a url like

   http://mydomain.com/Bookings/Get/2013-2-23/1-3,2-5

If the controller-action index has the signature

   public ActionResult Index(DateTime? start, string id = "")

MVCs model binding will then bind the params from the url automatically to the signatures variables.

Create a model in your models Folder "MyJsonModels.cs" and fill it with life...

public class Mydate
{
    public string ndate { get; set; }
    public MyDateNDay[] dates { get; set; }
    public string pdate { get; set; }
}

public class MyDateNDay {
    public string date {get; set;}
    public string day { get; set; }
}

public class Mystaff
{
    public Staff[] staff { get; set; }
}

public class Staff
{
    public int StaffID { get; set; }
    public int BusinessID { get; set; }
    public SlotDate[] SlotDates {get; set; }
}

public class SlotDate
{
    public string Date { get; set; }
    public string SlotDay { get; set; }
    public TimeSlot[] slots { get; set; }
}

public class TimeSlot
{
    public int SlotID { get; set; }
    public string SlotTime { get; set; }
}

public class InputData
{
    public int SlotID { get; set; }
    public int StaffID { get; set; }
    public int BusinessID { get; set; }
    public DateTime SlotDate { get; set; }
    public string SlotDay { get; set; }
    public string SlotTime { get; set; }

    public InputData(int sid, int stid, int bid, DateTime day, string time )
    {
        SlotID = sid;
        StaffID = stid;
        BusinessID = bid;
        SlotDate = day;
        SlotDay = day.DayOfWeek.ToString();
        SlotTime = time;
    }
}

Then inside the Index method you would have to implement the real action... (this will not create the exact result you are asking for, i merely show how you can use linq in order to simplify your code and to remove redundancy. Maybe you would use self-created objects to store the results instead of using KeyValuePairs. Again, its just a quick, but working example)

    public ActionResult Index(DateTime? start, string id = "")
    {

        var startdate = start ?? DateTime.Today;

        // split the input into anonymous objects containing staffid and businessid
        var staffids = from staffid in id.Split(',').Select(x => x.Split('-'))
                       select new { sid = int.Parse(staffid[0]), bid = int.Parse(staffid[1]) };

        // get the days you need
        var days = Enumerable.Range(0, 7).Select(x => startdate.AddDays(x));

        // create myDates
        int i = 0;
        Mydate MyDates = new Mydate() {
            ndate = days.First().AddDays(7).ToString("yyyy-MM-dd"),
            pdate = days.First().AddDays(-7).ToString("yyyy-MM-dd"),
            dates = (
                        from day in days
                            select new MyDateNDay { 
                               date = day.ToShortDateString(), 
                               day  = day.DayOfWeek.ToString()
                            }
                    ).ToArray()
        };

        // example InputData - Array as it might be returned by the sql procedure
        /* I added this Array to simulate a possible procedure result your DB could return,
           maybe you can even add a new procedure that would return the data just as in the
           following Array
        */
        var input = new [] { 
           new InputData( 40501, 1, 1, new DateTime(2013, 02, 20), "09:00"),
           new InputData( 40502, 1, 2, new DateTime(2013, 02, 20), "11:00"),
           new InputData( 42501, 1, 3, new DateTime(2013, 02, 23), "10:00"),
           new InputData( 42502, 1, 3, new DateTime(2013, 02, 23), "10:30"),
           new InputData( 45001, 2, 3, new DateTime(2013, 02, 21), "13:00"),
           new InputData( 45002, 2, 4, new DateTime(2013, 02, 22), "15:30"),
           new InputData( 47001, 2, 5, new DateTime(2013, 02, 24), "10:00"),
           new InputData( 47002, 2, 5, new DateTime(2013, 02, 24), "10:30"),
        };

        // receive all the stored_procedures
        i = 0;
        Mystaff MyStaff = new Mystaff()
        {
            staff = (from staff in staffids
                     select new Staff()
                     {
                         StaffID = staff.sid,
                         BusinessID = staff.bid,
                         SlotDates = (from day in days
                                      select new SlotDate()
                                      {
                                          Date = day.ToShortDateString(),
                                          SlotDay = day.DayOfWeek.ToString(),
                                          slots = ( from result in input
                                                    where // filter Slots that fit the requirements
                                                        day == result.SlotDate
                                                        && result.StaffID == staff.sid
                                                        && result.BusinessID == staff.bid
                                                   select new TimeSlot()
                                                   {
                                                       SlotID = result.SlotID,
                                                       SlotTime = result.SlotTime
                                                   }
                                                  ).ToArray()
                                      }
                                     // filter out days that don't have free slots
                                     ).Where(x => x.slots.Length > 0).ToArray()
                     }
                    ).ToArray()
        };


        return Json(new { MyDates, MyStaff}, JsonRequestBehavior.AllowGet);

    }
}

This Action-Method would return the following JSON

{
    "MyDates":
    {
        "ndate": "2013-03-02",
        "dates": [
            {
                "date": "23.02.2013", "day": "Saturday"
            }, {
                "date": "24.02.2013", "day": "Sunday"
            }, {
                "date": "25.02.2013", "day": "Monday"
            }, {
                "date": "26.02.2013", "day": "Tuesday"
            }, {
                "date": "27.02.2013", "day": "Wednesday"
            }, {
                "date": "28.02.2013", "day": "Thursday"
            }, {
                "date": "01.03.2013", "day": "Friday"
            }],
        "pdate": "2013-02-16"
    },
    "MyStaff":
        {
            "staff": [
                {
                    "StaffID": 1,
                    "BusinessID": 3,
                    "SlotDates": [
                        {
                            "Date": "23.02.2013",
                            "SlotDay": "Saturday",
                            "slots": [
                                { "SlotID": 42501, "SlotTime": "10:00" },
                                { "SlotID": 42502, "SlotTime": "10:30" }
                            ]
                        }]
                }, {
                    "StaffID": 2,
                    "BusinessID": 5,
                    "SlotDates": [
                        {
                            "Date": "24.02.2013",
                            "SlotDay": "Sunday",
                            "slots": [
                                { "SlotID": 47001, "SlotTime": "10:00" },
                                { "SlotID": 47002, "SlotTime": "10:30" }
                            ]
                        }
                    ]
                }
            ]
        }
};

I agree, this is not exactly what you were asking for ... but have a look at it, it is actually what you want ... its just that i took the liberty to remove redundancy In JavaScript you can easily walk through the data to display it. Using helper-models like the above MyJsonClasses help you a lot in designing Json-Outputs the way you want.

Well i hope i haven't forgotten anything.

这篇关于MVC 4 CONTROLER - 使用动态STAFFID是的&安培; BusinessID的而不是硬codeD的人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆