2016-03-20 8 views
2

Asp.Net MVC5のselectListに日付のリストを生成しようとしています。週に5週間だけリストを開始したいと思っていますが、これについての実際の問題を抱えています。ASP.Net MVC日付の​​リストを生成する方法

私は、この週に記録された時間に対してこれを使用したいので、理想的には私が作成するActionMethodでこれを必要とします。

私は次の例を使用しようとしていますHow can I get the DateTime for the start of the week?と難しかったです。私が持っているもの

は モデルです:

public class TimeSheet 
{ 
    public int TimeSheetId { get; set; } 
    public DateTime WeekCommencing { get; set; } 
    public int MondayHours { get; set; } 

    public int TuesdayHours { get; set; } 

    public int WednesdayHours { get; set; } 

    public int ThursdayHours { get; set; } 

    public int FridayHours { get; set; } 

    public int SaturdayHours { get; set; } 

    public int SundayHours { get; set; } 
    public bool CompletedTimeSheet { get; set; } 
    public int PlanId { get; set; } 

    public virtual ICollection<Plan> Plan { get; set; } 
} 

コントローラ:メソッド

// GET: TimeSheets/Create 
    public ActionResult Create() 
    { 
     DateTime today = DateTime.Today; 
     if(today.DayOfWeek == DayOfWeek.Monday && today.Day <= 7) 
      ViewBag 
     return View(); 
    } 

    // POST: TimeSheets/Create 
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "TimeSheetId,WeekCommencing,MondayHours,TuesdayHours,WednesdayHours,ThursdayHours,FridayHours,SaturdayHours,SundayHours,CompletedTimeSheet,PlanId")] TimeSheet timeSheet) 
    { 
     if (ModelState.IsValid) 
     { 
      db.TimeSheets.Add(timeSheet); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(timeSheet); 
    } 

誰かが私を助けたり、

感謝 を助言することができますマークが

答えて

2

わからない作成まさにあなたが「5私はちょうど前の5週間をしました。完全にテストされていないので、問題があればそれを言う。

編集:編集されたので、次の月曜日に撮影されます。

あなたが試したことを投稿していないので、あなたが欲しいものは少し曖昧です。

public class TimeSheet 
{ 
    public DateTime DateSelected { get; set; } 
} 

public ActionResult Create() 
{ 
    int weekCount = 5; 
    List<DateTime> listDates = new List<DateTime>(); 

    for (int i = 0; i < (weekCount * 7); ++i) //Get next 5 weeks 
    { 
     //Adds only next 5 mondays to the list of dates 
     if (DateTime.Today.AddDays(i).DayOfWeek == DayOfWeek.Monday) 
       listDates.Add(DateTime.Today.AddDays(i)); 
    } 

    ViewData["DateList"] = new SelectList(listDates);  

    return View(); 
} 

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "TimeSheetId,WeekCommencing,MondayHours,TuesdayHours,WednesdayHours,ThursdayHours,FridayHours,SaturdayHours,SundayHours,CompletedTimeSheet,PlanId,DateSelected")] TimeSheet timeSheet) 
{ 
    if (ModelState.IsValid) 
    { 
     db.TimeSheets.Add(timeSheet); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    return View(timeSheet); 
} 

@Html.DropDownListFor(x => x.DateSelected, (SelectList)ViewData["DateList"], new {@class = "form-control"}) 
@Html.ValidationMessageFor(x => x.DateSelected, "", new {@class = "text-danger"}) 
+0

ありがとう@Martin Mazza Dawson私は確かにこれを試してみます。 5週間連続で明確にする。私は次の5週間分の日付を表示したかったのです。リストは、現在次の5週間を取得しますので、それを編集した@markabarmi 21/03/2016 28/03/2016 2016年4月4日 2016年11月4日 18/04/2016 – markabarmi

+0

を開始 週間。 –

+0

ありがとう@マーティン。これは、すべての日をクールなドロップダウンリストに入れてくれます。毎週の最初の月曜日を表示させたいだけなら、私は何をする必要がありますか? – markabarmi

関連する問題