gpt4 book ai didi

asp.net-mvc - DisplayFor和ValueFor之间的区别

转载 作者:行者123 更新时间:2023-12-04 08:35:00 25 4
gpt4 key购买 nike

我想知道直到最近才知道的ValueFor和我一直用于显示值的DisplayFor之间有什么区别。

我建立了一个测试项目,在其中创建了一个具有2个属性的模型:

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;
}
}

这是我得到的结果:
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"

据我所知,使用 ValueFor代替 @Model.PropertyName没有任何优势

在寻找答案时,我偶然发现了 this question,其中投票率最高的答案虽然没有被投票为最佳答案,但给出的结果与我的不同。

谁知道我们为什么会得到不同的结果,以及 ValueFor真正用法是什么?

最佳答案

首先,我也听说过ValueFor。...但是,看source,看来ValueFor仅使用元数据对模型进行了简单的渲染,而忽略了任何关联的模板(内置或自定义)。

进一步的挖掘表明,实际上,ValueFor的结果与使用当前区域性取决于您是否提供自定义格式调用String.FormatConvert.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)

关于asp.net-mvc - DisplayFor和ValueFor之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com