MVC 4控制器 - 使用动态StaffID& BusinessID而不是硬编码的

时间:2013-02-22 06:54:43

标签: c# sql-server asp.net-mvc asp.net-mvc-4

我正在建立一个在线预订系统,以便人们可以在线预约医生预约。我大致构建了我的MVC 4控制器,以便我可以使用存储过程对其进行测试,以便为每位医生提供可用的约会。

下面你会看到我在控制器中有10位医生的硬编码,但是我需要从URL&医生的数量可能会有所不同(第一页可能有10名医生,但最后一页只有1名医生)。

注意:我还需要将“BusinessID”添加到控制器&每个医生都可以在多个企业工作的存储过程。

URL看起来像(DOC ID将包含2部分: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

我的问题是:

  1. 如何更改控制器以便医生ID(StaffID)和& BusinessID可以通过URL动态完成(参见上面的示例URL)?
  2. 如何针对URL中的每个SaffID-BusinessID动态构建控制器中的部件(请参阅注释中带有 * 的部分)?
  3. 我如何更好地优化它?
  4. ----获取可用的时隙控制器----

            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);
    

    ----需要JSON结果----

    {
    "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)\/"
        }]
    }
    }
    

    ---更新:---- 我可以从我的控制器获得以下json输出,但我需要删除“key”&来自myDates&的“价值” myStaff,并按日期对约会时间进行分组 - 例如: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"
            }]
        ]
    }]
    }
    
    基本上,我需要将json格式化为如下所示:

    {
    "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"
            }]
        ]}
    }]
    }]
    }
    

    这是我的控制者:

            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);
    
        }
    

    任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:1)

也许您还想为此使用mvc路由,添加新路由(具有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 
              }
);

这样你就可以使用像

这样的网址调用action方法
   http://mydomain.com/Bookings/Get/2013-2-23/1-3,2-5

如果控制器动作索引具有签名

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

然后,MVC模型绑定会自动将URL中的参数绑定到签名变量。

在模型中创建模型Folder&#34; MyJsonModels.cs&#34;并填补它的生命...

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;
    }
}

然后在Index方法中你必须实现真正的动作......(这不会创建你要求的确切结果,我只是展示你如何使用linq来简化代码和删除冗余也许你会使用自己创建的对象来存储结果,而不是使用KeyValuePairs。再次,它只是一个快速但有效的例子)

    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);

    }
}

此Action-Method将返回以下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" }
                            ]
                        }
                    ]
                }
            ]
        }
};

我同意,这不完全是你要求的......但看看它,它实际上是你想要的...它只是我冒昧地删除了冗余 在JavaScript中,您可以轻松浏览数据以显示它。使用上面的帮助模型MyJsonClasses可以帮助您按照自己的方式设计Json-Outputs。

我希望我没有忘记任何事情。

答案 1 :(得分:0)

首先,将控制器签名更改为以下内容:

public ActionResult Index(DateTime? start, string staffID)

然后,添加一些逻辑来将staffID解析为您想要的结果,如下所示:

var ids = staffID.Split(',');
var staffIds = ids.Select(p => p.Split('-').First()).ToList();
var businessIds = ids.Select(p => p.Split('-').Last()).ToList();

之后,您可以根据上面的staffIdsbusinessIds列表进行循环。