私はこのViewModelを持っています
public class CustomerSuscribeViewModel : IValidatableObject
{
[DataMember(IsRequired = true)]
[DataType(DataType.Text)]
public string Name { get; set; }
public string SurName { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Inject]
public IDataUsers DataUsers { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(DataUsers.Get(new UserFilter() {Email = Email}).Any())
{
yield return new ValidationResult(This Email is already used.",new string[]{"Email"});
}
if(ConfirmPassword != Password)
yield return new ValidationResult("Please confirm your apssword", new string[] { "Password", "ConfirmPassword" });
}
}
そしてこの行動
[HttpPost]
public ActionResult Suscribe(CustomerSuscribeViewModel customer)
{
if (!ModelState.IsValid)
return View(customer);
問題は、メンバーDataUsersが作成されないため、NullReferenceExceptionが発生することです。
バインディングは次の方法で行われます。
Bind<IDataUsers>().To<DataUsers>();
何か案が ?
編集:InjectAttributeは、コントローラー内のプロパティに対して適切に機能します。
環境:asp.net mvc 3、ninject 2.2(おそらく更新する必要がありますか?)