我在模型视图中使用RemoteAttribute来立即检查是否存在用户名。
[Remote("ValidUsername","UsersManagement",ErrorMessage ="this usernaem is duplicate")]
public string Username { get; set; }
此想法在插入新记录时很有用,但会阻止编辑更新。因为usernaem存在。该提案的解决方案是什么?
答案 0 :(得分:1)
选项1-使用其他字段:
您可以在模型中的远程验证属性中使用AdditionalFields参数,并将其与视图中的隐藏字段组合。
在您的模型课中:
[Remote("ValidUsername", "Home", ErrorMessage = "this usernaem is duplicate", AdditionalFields = "PageType")]
public string Username { get; set; }
在您的编辑/创建页面中,在与您要验证的字段相同的表单内添加隐藏字段:
<label asp-for="Username">Username</label>
<input asp-for="Username" />
<span asp-validation-for="Username"></span>
<input type="hidden" name="PageType" value="Edit" />
然后在服务器端验证,您可以获取附加值(编辑/创建)并基于该值进行验证,如果它是edit
,则跳过验证:
[AcceptVerbs("Get", "Post")]
public IActionResult ValidUsername(string Username, string PageType)
{
if ("Edit".Equals(PageType))
{
return Json(true);
}
if (Username.Equals("21"))
{
return Json(false);
}
return Json(true);
}
选项2-使用其他视图模型
您还可以在创建和编辑页面中使用其他视图模型。