为editorFor添加域名到电子邮件

本文关键字:电子邮件 域名 添加 editorFor | 更新日期: 2023-09-27 18:14:18

我使用c#, MVC4来构建一个帐户类,它有一个名为GmailAccount的属性,将由用户输入。

在Model中,我使用以下regulareexpression属性:

 [RegularExpression(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:'.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@gmail.com"] 

验证以@gmail.com结尾的电子邮件。

在我的html视图中,我只是使用:

 editorFor(model => model.GmailAccount) @@gmail.com

请注意,我在html中输入了@@gmail,以避免用户输入域名,并确保/强制用户使用有效的gmail帐户。

然而,我们还注意到,在客户端和服务器端都验证了相同的regulareexpression属性。我真的不希望我的用户手动输入域名,因为我不允许它与"@gmail.com"不同。

问题:

是否有办法在客户端和服务器端验证之前将@gmail.com附加到editorFor中提供的任何用户名?或者其他更好的选择?

为editorFor添加域名到电子邮件

我要做的是围绕你要做的创建一个视图模型:

public EmailEntryViewModel
{
  private string _emailPrefix = string.Empty;
  public string FullEmailAddress
  {
    get
    {
      return _emailPrefix + "@gmail.com";
    }
    set
    {
      if (!value.EndsWith("@gmail.com", StringComparison.OrdinalIgnoreCase))
      {
        //whatever logic that is internal
        throw new InvalidOperationException("Database contains an invalid email.");
      }
      this._emailPrefix = value.Substring(0,
        email.IndexOf("@gmail.com",  StringComparison.OrdinalIgnoreCase));
    }
  }
 [RegularExpression(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:'.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*"]
  public string EmailPrefix
  {
    get 
    {
      return _emailPrefix;
    } 
    set 
    {
      _emailPrefix = value;
    } 
  }
}

那么你只需要:

@Html.EditorFor(model => model.EmailPrefix) @@gmail.com