【问题标题】:How to use Model data in a view ASP MVC?如何在视图 ASP MVC 中使用模型数据?
【发布时间】:2013-05-22 09:22:27
【问题描述】:

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

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

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

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

但我不能那样使用它:无法将 lambda 表达式转换为类型“双”,因为它不是委托类型

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

最好的问候,

亚历克斯

【问题讨论】:

  • 不要在视图页面中放置逻辑或任何代码(没有辅助方法和html)。
  • @BappiDatta 我同意,但是如果我只想在视图中显示它,我应该在哪里舍入这个值?
  • 好的,然后在控制器中四舍五入该值并使用 ViewData 或 ViewBag 传递它
  • @Alex 如果您只想使用舍入值 - 在您的模型中使用 get 属性。

标签: c# asp.net asp.net-mvc view model


【解决方案1】:

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

使用 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 decimal format?

创建您自己的 HtmlHelper,它将对显示的值进行四舍五入。

@Html.DisplayRoundedFor(m => m.BudgetYear)

【讨论】:

  • 好的,这正是我所需要的。谢谢!
【解决方案2】:

首先您需要声明您将实际使用的模型,然后将其用作Model 变量。

@model YourModelName
@{
    var test = Model.BudgetYear.ToString("0.00");
}

【讨论】:

  • 好的,我明白了,我在循环中@foreach(模型中的变量项)所以我需要使用 item.Budget_Year。感谢您的帮助。
【解决方案3】:

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

double test = Model.BudgetYear;

只有当您试图让用户从视图中为其分配一个值时,才需要使用 lambda。

【讨论】:

    【解决方案4】:

    我不会在视图中这样做。相反,我会在您的模型/视图模型中舍入 BudgetYear 并将其发送到已经舍入的视图。将logic 保留在控制器/模型中并且不在视图中。这也将使测试更容易

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      相关资源
      最近更新 更多