Qual è il formato valido predefinito dell'attributo [Telefono]? Nella tabella dei dati, la colonna del telefono è navrchar (16) Se inserisco un numero di telefono come 1112223333, ottengo "il campo non è un numero di telefono valido". Se inserisco 01112223333, ottengo "Il valore '11112223333' non è valido."L'attributo DataAnnotations [Telefono]
Inoltre, come sovrascriverlo? Capisco che potrei fare qualcosa di simile, ma è questa la migliore pratica in questo caso?
[RegularExpression(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}",ErrorMessage="Invalid Phone Number!")]
codice correlate:
[Required]
[Phone]
public string Phone { get; set; }
<div class="editor-field">
@Html.EditorFor(model => model.Phone)
@Html.ValidationMessageFor(model => model.Phone)
</div>
Aggiornamento Credo che c'era un problema di mappatura quando ho cambiato la colonna telefono da int a navrchar. L'aggiornamento del modello non è stato sufficiente, quindi ho dovuto modificare manualmente il valore utilizzando il mapping delle tabelle.
Errore 2019: Mappatura membro specificata non valida. Il tipo 'Edm.Int32 [Nullable = False, DefaultValue =]' del membro 'Telefono' nel tipo 'UserDBModel.UserProfile' non è compatibile con 'SqlServerCe.nvarchar [Nullable = False, DefaultValue =, MaxLength = 16, Unicode = True, FixedLength = False] ' del membro' Phone 'nel tipo' UserDBModel.Store.UserProfile '.
Questa è una buona pratica. Se è necessario utilizzare la convalida del telefono più volte che meglio creare il proprio ValidationAttribute (PhoneNumberAttribute). – sjkm
Hai cambiato la colonna nel DB in 'nvarchar' ma hai lasciato la proprietà 'Phone' in' UserDBModel.UserProfile' an' int' –