Asp.net mvc 为IEnumerable创建视图模型<;选择列表项>;所有星期日下午

Asp.net mvc 为IEnumerable创建视图模型<;选择列表项>;所有星期日下午,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,ViewModel对于Allsundaysimonth,我保持不变: namespace TradeUK.Admin.Web.ViewModels { public class SundaysInMonthViewModel { public IEnumerable<SelectListItem> AllSundays { set; get; } public string SelectedSunday { set;

ViewModel对于Allsundaysimonth,我保持不变:

  namespace TradeUK.Admin.Web.ViewModels
  {
      public class SundaysInMonthViewModel
      {
         public IEnumerable<SelectListItem> AllSundays { set; get; }
         public string SelectedSunday { set; get; }
      }
  }

谢谢

谢谢,我会努力解决这个问题,试着理解。只有一件事:我有这个系统。全球化命名空间,但CultureInfo的不变量文化部分不被识别?我不知道,
CultureInfo。不变量文化在那里很好:对我来说很好。代码没问题,我把一个输入错误弄错了,我运行了代码,但出现错误:传入词典的模型项的类型为“TradeUK.Admin.Web.ViewModels.sundaysimonthviewmodel”,但此词典需要类型为“System.Collections.Generic.IEnumerable
1[System.Collections.Generic.KeyValuePair
2[System.String,System.Int32]”的模型项?我在viewmodel中的类型是IEnumerable AllSundays and string?@charlie_cat,你读过我的答案了吗?您是否在视图中看到以下行:
@model sundaysimonthviewmodel
?在我的示例中,我传递了一个
sundaysimonthviewmodel
。如果您需要多个控件,则必须修改控制器操作以将列表传递给视图。哦,是的,我确实阅读了该部分…抱歉…所有内容仍然非常新…我还在学习IEnumerables和selectlistitems。我是否可以添加另一个SundaysInMonthViewModel实例,其中包含SelectedSunday的文本和值?谢谢
public ActionResult TradeUKKPISearchesData() //show dropdownlist in the view
{
  var now = DateTime.Now;
  var lastMonth = now.AddMonths(-1);
  var lastMonthSundays = GetDatesOfSundays(lastMonth.Year, lastMonth.Month);
  var thisMonthSundays = GetDatesOfSundays(now.Year, now.Month);
  var sundaysToTakeFromLastMonth = 2;
  var sundays = lastMonthSundays.Skip(Math.Max(0, lastMonthSundays.Count() - sundaysToTakeFromLastMonth)).Take(sundaysToTakeFromLastMonth).Concat(thisMonthSundays);

  var allSundaysInThisMonth = new SundaysInMonthViewModel
  {
    AllSundays = sundays.Select(x => new SelectListItem
    {
      Value = x.ToString("dd-MM-yyyy"),
      Text = x.ToString("dd-MM-yyyy"),
    });

    //or must I have the code here? not sure how all this works yet
    SelectedSunday = sundays.Select(y => new SelectListItem
    {
      Value = 
      Text = 
    }) 
  };

  //this is what I meant or can I add this to the above?
  var selectedSunday = new SundaysInMonthViewModel{
    SelectedSunday = sundays.Select(y => new SelectListItem
    {
      Value = 
    })
  }
  return View(allSundaysInThisMonth);
}
public IEnumerable<DateTime> GetDatesOfSundays(int year, int month)
{
    var ci = CultureInfo.InvariantCulture;
    for (int i = 1; i <= ci.Calendar.GetDaysInMonth(year, month); i++)
    {
        var date = new DateTime(year, month, i);
        if (date.DayOfWeek == DayOfWeek.Sunday)
        {
            yield return date;
        }
    }
}
public ActionResult TradeUKKPISearchesData()
{
    var now = DateTime.Now;
    var lastMonth = now.AddMonths(-1);
    var lastMonthSundays = GetDatesOfSundays(lastMonth.Year, lastMonth.Month);
    var thisMonthSundays = GetDatesOfSundays(now.Year, now.Month);
    var sundaysToTakeFromLastMonth = 2;
    var sundays = lastMonthSundays
        .Skip(Math.Max(0, lastMonthSundays.Count() - sundaysToTakeFromLastMonth))
        .Take(sundaysToTakeFromLastMonth)
        .Concat(thisMonthSundays);

    var allSundaysInThisMonth = new SundaysInMonthViewModel
    {
        AllSundays = sundays.Select(x => new SelectListItem
        {
            // TODO: Adjust the formats you want for the 
            // Value and Text of your ddl
            Value = x.ToString("yyyy-MM-dd"),
            Text = x.ToString("yyyy-MM-dd"),
        }),
        SelectedSunday = thisMonthSundays
            .Where(x => x < now)
            .Last()
            .ToString("yyyy-MM-dd")
    };
    return View(allSundaysInThisMonth);
}
@model SundaysInMonthViewModel
...
@Html.DropDownListFor(x => x.SelectedSunday, Model.AllSundays)