Ich bin ziemlich neu in MVC. Ich verwende eine interface
als eine Eigenschaft für mein Modell.MVC3 Model Bindung mit Schloss
Ich bemerkte, dass meine Data Annotation Attributes
ignoriert wurden. Ich habe auch einen Fehler beim Absenden des Formulars:
Kann keine Instanz einer Schnittstelle erstellen.
Ich dachte bald heraus, dass muss ich werde eine benutzerdefinierte ModelBinder
ich habe harte Zeit herauszufinden, was in der CreateModel
Methode des ModelBinder
getan werden muss ich folgendes RegistrationModel
haben :
public class RegistrationModel
{
#region Properties (8)
public string Email { get; set; }
public string FirstName { get; set; }
public Gender Gender { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string PasswordConfirmation { get; set; }
public IPlace Place { get; set; }
public string Username { get; set; }
#endregion Properties
}
Hier ist die IPlace
Schnittstelle und Implementierung:
public interface IPlace
{
#region Data Members (7)
string City { get; set; }
string Country { get; set; }
string ExternalId { get; set; }
Guid Id { get; set; }
string Name { get; set; }
string Neighborhood { get; set; }
string State { get; set; }
#endregion Data Members
}
public class Place : IPlace
{
#region Implementation of IPlace
public Guid Id { get; set; }
[StringLength(100, ErrorMessage = "City is too long.")]
public string City { get; set; }
[StringLength(100, ErrorMessage = "Country is too long.")]
public string Country { get; set; }
[StringLength(255, ErrorMessage = "External ID is too long.")]
public string ExternalId { get; set; }
[Required(ErrorMessage = "A name is required.")]
[StringLength(450, ErrorMessage = "Name is too long.")]
[DisplayName("Location")]
public string Name { get; set; }
[StringLength(100, ErrorMessage = "Neighborhood is too long.")]
public string Neighborhood { get; set; }
[StringLength(100, ErrorMessage = "State is too long.")]
public string State { get; set; }
#endregion
}
Wozu dient hier die Schnittstelle? Befreien Sie sich davon und nutzen Sie eine Klasse "Place" –