【发布时间】:2020-03-03 00:33:59
【问题描述】:
我的页面上有 3 行用于成就输入。 即使仅填充了 1 行,我也希望 ViewModel 状态有效。 现在模型状态仅在我填满所有 3 行时才有效。
我必须为此创建多个构造函数吗?
public int AchievementsRank1 { get; set; }
public string AchievementsEvent1 { get; set; }
public int AchievementsRank2 { get; set; }
public string AchievementsEvent2 { get; set; }
public int AchievementsRank3 { get; set; }
public string AchievementsEvent3 { get; set; }
public EditProfileViewModel()
{
}
public EditProfileViewModel(string username, int achievementsR1, string achievementsE1, int achievementsR2, string achievementsE2, int achievementsR3, string achievementsE3, string freetext, string social)
{
this.Username = username;
this.AchievementsRank1 = achievementsR1;
this.AchievementsEvent1 = achievementsE1;
this.AchievementsRank2 = achievementsR2;
this.AchievementsEvent2 = achievementsE2;
this.AchievementsRank3 = achievementsR3;
this.AchievementsEvent3 = achievementsE3;
this.Freetext = freetext;
this.SocialURL = social;
}
[ValidateAntiForgeryToken]
public IActionResult Index([Bind("Username,AchievementsRank1,AchievementsEvent1,AchievementsRank2,AchievementsEvent2,AchievementsRank3,AchievementsEvent3,Freetext,SocialURL")] EditProfileViewModel edit)
{
if (ModelState.IsValid)
{
ProfileDTO dto = CreateDtoFromInput(edit);
//commands.SaveNewProfile(dto);
Profile prof = new Profile(dto);
return View("Profile", prof);
}
else
{
return View(edit);
}
}
【问题讨论】:
-
我建议使用键值对而不是单独使用字段
-
在模型类中实现
IValidatableObject,根据您的需求返回自定义错误列表。
标签: c# asp.net asp.net-mvc viewmodel modelstate