我已经实现了自定义成员资格提供程序并拥有以下类;
public class ProfileCommon : ProfileBase
{
#region Members
[Required(ErrorMessage="Required")]
public virtual string Title
{
get { return ((string)(this.GetPropertyValue("Title"))); }
set { this.SetPropertyValue("Title", value); }
}
然后我在我的控制器中想要做以下事情;
[HttpPost]
[Authorize]
public ActionResult EditInvestorRegistration(FormCollection collection)
{
ProfileCommon profileCommon= new ProfileCommon();
TryUpdateModel(profileCommon);
如果错误中不包含标题,则此类失败;
对象'Models.ProfileCommon'上的属性访问者'Title'引发了以下异常:'找不到设置属性'Title'。'
如果我摆脱属性[Required...
它可以正常工作但现在我不再对我的对象进行自动验证。
现在,我知道我可以一次检查每个属性并解决问题,但我非常希望使用DataAnnotations为我做这项工作。
有什么想法吗?
答案 0 :(得分:1)
您使用自定义配置文件类作为操作输入而不是视图模型似乎很奇怪:
public class ProfileViewModel
{
[Required]
public string Title { get; set; }
}
然后在您的控制器中,您可以使用AutoMapper在视图模型和将更新配置文件的模型类之间进行转换:
[HttpPost]
[Authorize]
public ActionResult EditInvestorRegistration(ProfileViewModel profileViewModel)
{
ProfileCommon profileCommon = AutoMapper.Map<ProfileViewModel, ProfileCommon>(profileViewModel);
...
}