如何在视图中相乘?或者有最佳实践?项目 - 汽车租赁。 我的控制器采用参数int numberDays。 我需要计算所有日期的View总价。需要在一天内将价格乘以天数。然后,此参数必须以控制器的形式传递。
public ActionResult DayView(int numberDays)
{
//
}
在foreach中查看我显示数字车,彩色车等......
@model IEnumerable<Car>
foreach (Car car in Model)
{
//other parameters
<p>Full Price</p>:Model.CostOneDay //need multiply numberDays
}
<p>Full Price</p>:@(car.CostOneDay * Model.NumberOfDays)
此参数如何在hiddenfor中添加,我需要将此表单传递给控制器
答案 0 :(得分:1)
要扩展我发布的评论,现在您的控制器如下所示:
public ActionResult DayView(int numberDays)
{
// returns View with IEnumerable
}
您希望将此更改为此类,使用新类CalculatedDayViewModel
(更好地命名) - 并让该类将计算字段保存为属性。请务必设置一个构造函数,允许您传入numberDays
并进行计算。
public ActionResult DayView(int numberDays)
{
return View(new CalculatedDayViewModel(numberDays));
}
然后在您的剃刀中,将@model IEnumerable<Car>
更改为@model CalculatedDayViewModel
,您就可以访问计算出的属性。
答案 1 :(得分:1)
您可以创建包含Cars
和NumberOfDays
属性
public class MyViewModel
{
public IEnumerable<Car> Cars { get; set; }
public int NumberOfDays { get; set; }
}
然后在您的控制器中使用它并将其传递给视图
public ActionResult DayView(int numberDays)
{
MyViewModel model = new MyViewModel();
model.NumberOfDays = numberDays;
model.Cars = ...; // get the car records here
return View(model);
}
并按以下方式更改您的观看次数
@model MyViewModel
foreach (Car car in Model.Cars)
{
//other parameters
<p>Full Price</p>:@(car.CostOneDay * Model.NumberOfDays)
}
修改强>
如果您想使用@Html.HiddenFor
中的相乘价格,则需要为Car
课程添加其他属性。假设CostOneDay
的类型是十进制,添加带有十进制类型的FullPrice
属性
public class Car
{
// other properties
public decimal FullPrice { get; set; }
}
然后为控制器中的每个汽车记录设置FullPrice
属性
public ActionResult DayView(int numberDays)
{
MyViewModel model = new MyViewModel();
model.NumberOfDays = numberDays;
model.Cars = ...; // get the car records here
foreach (var car in model.Cars)
{
car.FullPrice = car.CostOneDay * model.NumberOfDays;
}
return View(model);
}
并使用@Html.HiddenFor
,如下所示
@model MyViewModel
foreach (Car car in Model.Cars)
{
//other parameters
<p>Full Price</p>:@car.FullPrice
@Html.HiddenFor(m => car.FullPrice)
}