rem*_*rel 1 ninject asp.net-mvc-3
我有这个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" });
}
}
Run Code Online (Sandbox Code Playgroud)
这个动作
[HttpPost]
public ActionResult Suscribe(CustomerSuscribeViewModel customer)
{
if (!ModelState.IsValid)
return View(customer);
Run Code Online (Sandbox Code Playgroud)
问题是成员DataUsers永远不会被创建,所以我得到一个NullReferenceException.
绑定通过以下方式完成:
Bind<IDataUsers>().To<DataUsers>();
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
编辑:InjectAttribute适用于我的控制器内的属性.
Environnement:asp.net mvc 3,ninject 2.2(也许我需要更新?)
Ninject不会创建视图模型,因此会忽略inject属性.通常,视图模型应该保持简单并且没有依赖性.你可以用ValidationAttributes代替IValidatableObject
阅读有关注入验证属性的https://github.com/ninject/ninject.web.mvc/wiki/Injection-of-validators.
下面是一个示例,说明如何使用以下方法实现密码与确认密码匹配的验证ValidationAttribute:
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |