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

---UPDATE:---- コントローラーから次の 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でアクションメソッドを呼び出すことができます

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

私は同意します、これはまさにあなたが求めていたものではありません...しかし、それを見てください、それは実際にあなたが望んでいるものです...それは私が自由に冗長性を取り除いただけです表示します。上記の 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();

その後、上記のリストに基づいてループを実行できますstaffIdsbusinessIds

于 2013-02-22T07:11:01.423 に答える