2

我是 ASP MVC 的初学者,我正在尝试在视图中显示模型中的数据。这就是我显示数据的方式:

@Html.DisplayFor(modelItem => item.Budget_Year)

但我不知道如何使用这些数据,例如我试图将这个结果四舍五入,然后我天真地尝试:

@{ 
   double test = (modelItem => item.Budget_Year);    
   test = System.Math.Round(test , 2);
}

但我不能那样使用它:Cannot convert lambda expression to type 'double' because it is not a delegate type

有人可以向我解释如何在我的视图中使用与我的模型不同的项目吗?

此致,

亚历克斯

4

4 回答 4

7

你有很多方法可以更正确地做到这一点:

使用 ViewModel 类,其中您有一个属性,它是您的 Rounded 值

public class MyViewModel {
   public double BudgetYear {get;set;}
   public double RoundedBudgetYear {get {return Math.Round(BudgetYear, 2);}}
}

并在视图中

@Html.DisplayFor(m => m.RoundedBudgetYear)

或者

在您的属性上添加DisplayFormat 属性

请参阅Html.DisplayFor 十进制格式?

或者

创建您自己的 HtmlHelper,它将舍入显示的值。

@Html.DisplayRoundedFor(m => m.BudgetYear)
于 2013-05-22T09:29:19.600 回答
4

First you need to declare what model you will actually be using and then use it as Model variable.

@model YourModelName
@{
    var test = Model.BudgetYear.ToString("0.00");
}
于 2013-05-22T09:27:25.657 回答
0

I wouldn't do this in the view. Instead I would round BudgetYear in your model / view model and send it down to the View already rounded. Keep the logic in the controller / model and out of the view. This will make it easier to test as well

于 2013-05-22T09:27:16.287 回答
0

如果您只是想访问模型的属性,您可以这样做:

double test = Model.BudgetYear;

仅当您尝试让用户从视图中为其分配值时,才需要使用 lambda。

于 2013-05-22T09:24:19.550 回答