Asp.net mvc 为IEnumerable创建视图模型<;选择列表项>;所有星期日下午
ViewModel对于Allsundaysimonth,我保持不变: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;
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.IEnumerable1[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)