为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中提供的任何用户名?或者其他更好的选择?
我要做的是围绕你要做的创建一个视图模型:
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