列表视图控制器方法中的if语句
本文关键字:if 语句 方法 视图 控制器 列表 | 更新日期: 2023-09-27 18:05:03
在我的控制器方法中有以下代码,用于向成员类型的List View提供数据:
[HttpGet]
public ActionResult SelectMembershipType(int clubId)
{
//Populate the list
var membershipTypes = from s in db.MembershipTypes
where (s.ClubId == clubId && s.Dormant == false)
orderby s.Type
select s;
//Generate the ViewModel with the appropriate membership types
var viewModel = membershipTypes.Select(t => new SelectMembershipTypeViewModel
{
//Select appropriate Cost based on current month
if(DateTime.Now.Month == t.ReducedMonth)
{
Cost = t.ReducedCost;
}
else
{
Cost = t.Cost;
}
ClubId = club.ClubId,
Name = club.Name,
MembershipName = t.Type,
MembershipType = t.MembershipTypeClassification.Type,
MembershipTypeId = t.MembershipTypeId,
});
return View(viewModel);
}
我输入的if语句不起作用,它抛出了几个错误。我试图将if语句应用于成本值,即,如果今天的月份等于数据库中每个成员类型的ReducedMonth,则成本值等于成员类型ReducedCost值,如果不是,则使其等于其成本。每个MembershipType可以有不同的减少月和成本
我不确定正确的语法来正确编写这个
我输入的if语句不起作用,它抛出了几个错误。
是的,你已经把它放在对象初始化器中了。对象初始化器不是任意的代码块——它们基本上是一个property = value
赋值列表。(稍微多一点,但是…)
幸运的是,在这种情况下,您可以使用条件运算符:
var viewModel = membershipTypes.Select(t => new SelectMembershipTypeViewModel
{
//Select appropriate Cost based on current month
Cost = DateTime.Now.Month == t.ReducedMonth ? t.ReducedCost : t.Cost,
ClubId = club.ClubId,
Name = club.Name,
MembershipName = t.Type,
MembershipType = t.MembershipTypeClassification.Type,
MembershipTypeId = t.MembershipTypeId,
});
这将编译,但由于将查询转换为SQL,它可能无法工作。您可能需要先提取DateTime.Now.Month
部分:
int month = Date.Now.Month;
var viewModel = membershipTypes.Select(t => new SelectMembershipTypeViewModel
{
//Select appropriate Cost based on current month
Cost = t.ReducedMonth == month ? t.ReducedCost : t.Cost,
ClubId = club.ClubId,
Name = club.Name,
MembershipName = t.Type,
MembershipType = t.MembershipTypeClassification.Type,
MembershipTypeId = t.MembershipTypeId,
});
注意DateTime.Now.Month
将是此处服务器所在时区的月份…这真的是你想要的吗?假设您希望它位于特定的时区,我会明确说明……否则,您可能会遇到一些难以诊断的问题。