结构类似于DateTime

时间:2015-02-19 07:41:45

标签: c# asp.net-mvc-4 datetime struct attributes

我正在使用客户端/服务器端验证构建C#,MVC4 .NET Web应用程序,方法是将自定义属性添加到我的模型属性中。

在这个项目中,有几种形式,用户可以输入电子邮件地址。因此,每个ViewModel都有string属性EMailAddress,其中包含[CustomRequired][CustomEMail][CustomMinLength(13)][CustomMaxLength(200)]等属性,以确保Mail有效并且可以写入只能存储例如200个字符。

无论用户以何种形式输入电子邮件,它都将始终存储在同一个数据库字段中。因此,创建一个cutom DataType EMailAddress

是有意义的

我最终得到了以下内容:

public struct EMailAddress
{
    [CustomMinLength(13)]
    [CustomMaxLength(200)]
    [CustomEMail]
    public string Address { get; set; }

    private EMailAddress(string value)
    {
        Address = value;
    }

    public static implicit operator EMailAddress(string value)
    {
         return new EMailAddress(value);
    }

    public static implicit operator EMailAddress(EMailAddress value)
    {
         return new value.Address ;
    }
}

在ViewModel中,我将创建一个此类型EMailAddress的属性,用[CustomRequired]装饰,因为在应用程序的每个部分都不需要电子邮件。

我想要的是一个结构/类,其行为类似于.NET DateTime结构。我可以拥有DateTime的属性,在视图中我可以做到:

@Html.TextBoxFor(m => m.DateTimeProperty)

将文本框的值绑定到基础DateTime对象。但这不适用于我的自定义结构,因为我需要编写类似

的内容
@Html.TextBoxFor(m => m.EMailProperty.Address)

我真的不喜欢结构中的public string Address { get; set; }

当遇到DateTime对象时,.NET是否会做一些“魔术”或者这是如何实现的?我是完全走错路还是我只错过了一个特殊的部分?也许是一个类而不是结构?

0 个答案:

没有答案