有没有办法扩展System.Web.Mvc.HiddenInputAttribute以供字段使用?

时间:2018-01-02 08:49:00

标签: c# asp.net-mvc attributes sealed

由于未知原因 HiddenInputAttribute https://msdn.microsoft.com/en-us/library/system.web.mvc.hiddeninputattribute(v=vs.118).aspx无法在字段上使用。

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Property, 
AllowMultiple = false, Inherited = true)]
public sealed class HiddenInputAttribute : Attribute

由于属性类已被密封,因此无法通过继承重新定义。

我已经考虑过(“临时”)绕过 GetType 这样的方法

public new Type GetType()
{
  return typeof(System.Web.Mvc.HiddenInputAttribute);
}
新属性类中的

但显然 Enumerable.OfType(IEnumerable)等方法不依赖 GetType 实现,因此不符合条件的方式

我在某处看到由于性能原因而密封的属性 HiddenInputAttribute

1 个答案:

答案 0 :(得分:1)

  

如果您在DisplayAttribute或DataTypeAttribute查找实例,您会发现它们可用于字段。

是的,这使它成为一个有趣的问题,但仍然没有实用价值。

当您查看命名空间时,您会看到[Display()]DataType())][StringLength()][Key]都来自System.ComponentModel.DataAnnotations

[HiddenInputField]属性来自Microsoft.AspNetCore.Mvc命名空间。

ComponentModel属性较旧,针对更多应用程序区域,其中一些可能使用字段。但我认为主要是他们的年龄在这里。

MVC属性旨在与该平台的ModelBinding一起使用并排除字段。如果你能够在一个字段上使用它,你仍然无法将它绑定到任何东西。