ASP.NET MVC - System.Web.Mvc.HiddenInputAttribute

创建时间:
2018-09-21 09:44
最近更新:
2018-09-21 10:20

Resource - MSDN

  1. HiddenInputAttribute Class - Represents an attribute that is used to indicate whether a property or field value should be rendered as a hidden input element.
  2. HiddenInputAttribute.DisplayValue Property - Gets or sets a value that indicates whether to display the value of the hidden input element. 由源码可见 本属性值 默认为 true。因此常规调用应为 [HiddenInput(DisplayValue = false)]

Source Code of System.Web.Mvc.HiddenInputAttribute from JetBrains dotPeek 1.0 at 2018-09-21

Complete Copy:

// Type: System.Web.Mvc.HiddenInputAttribute
// Assembly: System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Mvc.dll

using System;

namespace System.Web.Mvc
{
  [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
  public sealed class HiddenInputAttribute : Attribute
  {
    public bool DisplayValue { get; set; }

    public HiddenInputAttribute()
    {
      this.DisplayValue = true;
    }
  }
}

测试记录 - DisplayValue 属性

测试环境

  • 2018-09-21
  • VM0
  • Windows 10
  • Visual Studio 2013
  • CodeGen Solution

测试代码

共进行了三组测试,并对比其生成的 HTML。

三次测试时,View 不变,如下:

@Html.EditorFor(model => model.Id)

第一次测试时,ViewModel 如下:

[HiddenInput]
public ulong Id { get; set; }

第二次测试时,ViewModel 如下:

[HiddenInput(DisplayValue = true)]
public ulong Id { get; set; }

以上两次生成的 HTML 相同,如下:

82501645107200504<input data-val="true" data-val-number="字段 主键 必须是一个数字。" data-val-required="主键 字段是必需的。" id="Id" name="Id" type="hidden" value="82501645107200504" />

第三次测试时,ViewModel 如下:

[HiddenInput(DisplayValue = false)]
public ulong Id { get; set; }

此次生成的 HTML 如下:

<input data-val="true" data-val-number="字段 主键 必须是一个数字。" data-val-required="主键 字段是必需的。" id="Id" name="Id" type="hidden" value="82501645107200504" />

测试结果

  • DisplayValuetrue 时,会在 生成的 input 前 输出值。
  • DisplayValuefalse 时,无此行为

测试记录 - HiddenFor() versus EditorFor()

测试环境

  • 2018-09-21
  • VM0
  • Windows 10
  • Visual Studio 2013
  • CodeGen Solution

测试代码

共进行了两组测试,并对比其生成的 HTML。

两次测试时,ViewModel 不变,如下:

[HiddenInput(DisplayValue = false)]
public ulong Id { get; set; }

两次测试时,View 分别如下:

@Html.HiddenFor(model => model.Id)
@Html.EditorFor(model => model.Id)

测试结果

两次测试时,生成的 HTML 相同,如下:

<input data-val="true" data-val-number="字段 主键 必须是一个数字。" data-val-required="主键 字段是必需的。" id="Id" name="Id" type="hidden" value="82501645107200504" />