0

我正在建立一个在线预约系统,以便人们可以在线预约医生。我已经粗略地构建了我的 MVC 4 控制器,以便我可以使用我必须为每个医生获取可用预约的存储过程来测试它。

下面你会看到我在控制器中硬编码了 10 位医生,但我需要从 URL 中提取医生 ID,并且医生的数量可能会有所不同(第一页可能有 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. 我怎样才能更好地优化它?

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

        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 输出,但我需要从 myDates 和 myStaff 中删除“键”和“值”,并按日期对约会时间进行分组 - 例如:date0 ,日期1,日期2..

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

    }

任何帮助,将不胜感激 :)

4

2 回答 2

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

这样你就可以用一个像这样的 url 调用 action 方法

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

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

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

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

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

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。

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

于 2013-02-22T07:18:41.380 回答
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();

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

于 2013-02-22T07:11:01.423 回答