加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-05-25 09:17:34 所属栏目:asp.Net 来源:互联网
导读:我想知道在最近我不知道的ValueFor和我一直用来显示值的DisplayFor之间有什么区别. 我建立了一个测试项目,在其中我创建了一个具有2个属性的Model: public class TestModel{ [Display(Name = Montant)] [DisplayFormat(DataFormatString = {0:C2})] public

我想知道在最近我不知道的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;
    }
}

这是我得到的结果:

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.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)

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读