C# 列表视图控制器方法中的if语句
我的控制器方法中包含以下代码,用于向成员类型列表视图提供数据:C# 列表视图控制器方法中的if语句,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器方法中包含以下代码,用于向成员类型列表视图提供数据: [HttpGet] public ActionResult SelectMembershipType(int clubId) { //Populate the list var membershipTypes = from s in db.MembershipTypes where (s.ClubId == clubId &
[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语句应用于Cost值,即如果每个成员类型的todays month等于数据库中的reduced month,则使Cost值等于成员类型reduced Cost值,如果不是,则改为使其等于其成本。
每种会员资格类型都可以有不同的缩减月数和成本
我不确定正确的语法来正确地编写代码
我输入的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
将是此处服务器时区中的月份。。。这就是你想要的吗?假设你想让它在一个特定的时区,我会明确地说。。。否则,您可能会遇到一些难以诊断的问题
我输入的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
将是此处服务器时区中的月份。。。这就是你想要的吗?假设你想让它在一个特定的时区,我会明确地说。。。否则,您可能会遇到一些难以诊断的问题。确切的错误信息是什么?您的问题已经回答了两次:确切的错误信息是什么?您的问题已经回答了两次:非常感谢Jon,第一个选项非常有效。谢谢你的解释,现在它更有意义了。非常感谢乔恩,第一种选择非常有效。也谢谢你的解释,现在它更有意义了。