2016-02-18 68 views
0

我需要能夠獲取「From」和「To」之間輸入日期的列表 ,同時顯示每個日期的數字。我需要使用for循環,以便可以填充單選按鈕。這裏是我此刻的代碼 - 但它的循環日期和天數是不是我想要的:進入從(2016年2月1日) 日期要(2016年2月2日)輸出:獲取2日期之間的差異並顯示日期編號和日期c#razor mvc

  • •天:1個日期:2016年1月2日
  • •天:1個日期:2016年2月2日
  • •天:2日期:2016年1月2日
  • •天:2日期:02/02/2016

但是我想要的是:

•天:1日期:2016年1月2日

•天:2日期:2016年2月2日

這裏是我的代碼:

List<DateTime> dates = new List<DateTime>(); 
for (DateTime date = Model.DataModel.DateFrom.Value; date <= Model.DataModel.DateTo; date = date.AddDays(1)) 
{ 
    dates.Add(date); 
} 

//Then enter this number of days into the loop to show radiobuttons 
for (int i = 1; i <= dates.Count; i++) 
{ 
    foreach (var item in dates) 
    { 
     <ul> 
      <li>Day: @i.ToString() Date: @item.ToShortDateString()</li> 
     </ul> 
    } 
} 
+2

你只需要一個循環 - '的for(int i = 1;我<= dates.Count;我++){

  • 日:@ i.ToString ()日期:@dates [i] .ToShortDateString()
  • }'。但該代碼不屬於視圖。創建一個視圖模型並將其填充到控制器中。正如@StephenMuecke所說: –

    +0

    。 –

    +0

    哦,謝謝是的,我知道它不應該在一個視圖中,我是MVC的新手,所以我現在只是在學習設計模式。 – wubblyjuggly

    回答

    1

    你有兩種方法可供選擇,但你幾乎在那裏與你現在的代碼。只要想想它是目前的行爲和它正在做什麼,你會看到你的嵌套循環導致的問題。

    //Then enter this number of days into the loop to show radiobuttons 
    <ul> 
        @for (int i = 1; i <= dates.Count; i++) 
        { 
    
         <li>Day: @i.ToString() Date: @dates[i-1].ToShortDateString()</li> 
    
        } 
    </ul> 
    

    或者你可以這樣做:

    //Then enter this number of days into the loop to show radiobuttons 
    if(dates.Any()) 
    { 
        var count = 1; 
        <ul> 
         @foreach (var date in Dates) 
         { 
    
          <li>Day: @count Date: @date.ToShortDateString()</li> 
          count++; 
         } 
        </ul> 
    } 
    else 
    {<p>No dates found</p>} 
    
    +0

    乾杯!第一個選擇 – wubblyjuggly

    相關問題