Вариант 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 - использовать другую модель просмотра
Вы также можете использовать другую модель представления при создании и редактировании страниц.