Mic*_*iey 8 asp.net-mvc view-helpers
我想知道之间的区别是什么ValueFor
,直到最近我才知道,以及DisplayFor
我用来显示值的差异.
我建立了一个测试项目,在其中我创建了一个具有2个属性的Model:
public class TestModel
{
[Display(Name = "Montant")]
[DisplayFormat(DataFormatString = "{0:C2}")]
public Decimal Amount
{
get;
set;
}
[Display(Name = "Date d'achat")]
[DataType(DataType.Date)]
public DateTime Date
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的结果:
TestModel model = new TestModel
{
Amount = 1234.333M,
Date = DateTime.Today.AddDays(-10)
};
@Html.DisplayFor(x => x.Amout) => "1 234,33 €"
@Html.ValueFor(x => x.Amount) => "1234,333"
@Html.DisplayFor(x => x.Date) => "23/03/2014"
@Html.ValueFor(x => x.Date) => "23/03/2014 00:00:00"
Run Code Online (Sandbox Code Playgroud)
从我所看到的,没有使用的优势ValueFor
而不是@Model.PropertyName
在寻找答案时,我偶然发现了这个问题,其中最受欢迎的答案虽然没有被选为最佳答案,但却给出了与我不同的结果.
任何人都知道为什么我们得到不同的结果和真正的用途是ValueFor
什么?
首先我也听说过ValueFor
......但是,查看源代码似乎只使用针对模型的元数据进行ValueFor
简单渲染,而忽略任何关联的模板(内置或自定义)。
进一步挖掘显示,实际上,结果ValueFor
相当于调用String.Format
或Convert.ToString
使用当前文化,这取决于您是否提供自定义格式
@Html.ValueFor(x => x.Amount) = Convert.ToString(x.Amount, CultureInfo.CurrentCulture)
@Html.ValueFor(x => x.Amount, "0.00") = String.Format(x.Amount, "0.00", CultureInfo.CurrentCulture)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4723 次 |
最近记录: |