在模型视图中使用RemoteAttribute进行编辑和创建操作

时间:2019-06-10 19:44:35

标签: validation asp.net-core attributes

我在模型视图中使用RemoteAttribute来立即检查是否存在用户名。

[Remote("ValidUsername","UsersManagement",ErrorMessage ="this usernaem is duplicate")]
 public string Username { get; set; }

此想法在插入新记录时很有用,但会阻止编辑更新。因为usernaem存在。该提案的解决方案是什么?

1 个答案:

答案 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-使用其他视图模型

您还可以在创建和编辑页面中使用其他视图模型。