Asp.net 阻止用户在.NET MVC3中提交默认表单值

Asp.net 阻止用户在.NET MVC3中提交默认表单值,asp.net,asp.net-mvc-3,validation,unobtrusive-validation,Asp.net,Asp.net Mvc 3,Validation,Unobtrusive Validation,我有以下型号: public class Contact { public Contact() { Name = "Your Name"; Email = "Your Email"; Message = "Your Message"; } [Required] [StringLength(60,MinimumLength = 3)] public string Name { get; set; }

我有以下型号:

public class Contact
{
    public Contact()
    {
        Name = "Your Name";
        Email = "Your Email";
        Message = "Your Message";
    }

    [Required]
    [StringLength(60,MinimumLength = 3)]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [RegularExpression(@"\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b")]
    public string Email { get; set; }

    [Required]
    [StringLength(2200, MinimumLength = 10)]
    [DataType(DataType.MultilineText)]
    public string Message { get; set; }
}

对于Message和Name,它们的默认值(在构造函数中)实际上通过了验证,这显然是错误的。我知道我可以检查这一点并在控制器中抛出一个错误,但我正在试图找到一种在模型中执行这些操作的方法(因为我认为这是正确的位置)。

这些看起来像提示,而不是默认值。您应该使用javascript实现这些,而不是将它们设置为输入值。

这些看起来像提示,而不是默认值。您应该使用javascript实现这些,而不是将它们设置为输入值。

我不会在服务器端这么做。使用文本框作为ex的多种方法之一


我根本不会在服务器端这么做。使用文本框作为ex的多种方法之一


谢谢你的建议——实际上我对水印很熟悉,而且一直都在使用它。我只是想分出更多的关于验证的知识——你认为这不是最好的实践吗?在一个水印中,客户端的默认值对我来说是很好的,它避免了在一个模型中只需破解一个黑客攻击的默认值:谢谢你的建议——我真的很熟悉水印并一直使用它。我只是试图分叉并了解更多关于验证——你认为这不是最好的实践吗?在一个水印中,客户端缺省对我来说是很好的,它避免了在一个模型中只需破解一个HACK的默认值:一些类似于设置值并防止提交与默认值匹配的东西吗?我曾经考虑过这一点(或者只是使用水印),但我正试图走出我的舒适区,更多地学习如何使用模型和验证。但是,如果JS方式真的是最佳实践,我会回到这一点上。比如设置值并在它们与默认值匹配时阻止提交?我曾经考虑过这一点(或者只是使用水印),但我正试图走出我的舒适区,更多地学习如何使用模型和验证。但是,如果JS方式真的是最佳实践,我将回到这一点。