Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑时验证对象是否存在_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 编辑时验证对象是否存在

C# 编辑时验证对象是否存在,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,这太傻了,但我一辈子都搞不懂 我想验证在添加或编辑员工时,员工用户名是否不存在。这是我的视图模型: public class EmployeeViewModel { [ScaffoldColumn(false)] public int EmployeeId { get; set; } [Remote("UsernameExists", "Employees", ErrorMessage = "Username already exists")] public s

这太傻了,但我一辈子都搞不懂

我想验证在添加或编辑员工时,员工用户名是否不存在。这是我的视图模型:

public class EmployeeViewModel
{
    [ScaffoldColumn(false)]
    public int EmployeeId { get; set; }

    [Remote("UsernameExists", "Employees", ErrorMessage = "Username already exists")]
    public string Username { get; set; }
}
在我的控制器中:

public ActionResult UsernameExists(string username)
{
    return Json(!_employeesRepository.UsernameExists(username), JsonRequestBehavior.AllowGet);
}
员工存储库中的功能:

public bool UsernameExists(string username)
{
    return Employees.Where(e => e.Username.ToLower().Equals(username.ToLower())).Count() > 0;
}
这在我创建员工时非常有效。但是如果我正在编辑一个,并且我试图保存它,我会得到一个错误,即用户名已经存在(这是真的)。因此,我需要告诉函数,如果我使用该用户名编辑员工,则该用户名存在是可以的


远程验证是否可以实现这一点?

传入一个额外的标志,以指示您所处的模式,例如,
bool isEditMode
,并在此基础上调整结果。您可以使用AdditionalFields属性传入该信息;另外,请看这里:

您可以通过使用两个不同的ViewModel来解决此问题,在这两个ViewModel中,您可以从另一个ViewModel派生一个ViewModel:超类可用于编辑,子类用于带有远程验证的插入

public class EmployeeViewModel // The normal one, can be used for editing
{
    [ScaffoldColumn(false)]
    public int EmployeeId { get; set; }

    public virtual string Username { get; set; }
}

public class InsertEmloyeeViewModel : EmployeeViewModel
{
    [Remote("UsernameExists", "Employees", ErrorMessage = "Username already exists")]
    public override string Username { get; set; }

}
当编辑函数还包含一些“特殊性”时,可以从基类EmployeeViewmodel派生第三类“EditEmployeeViewModel”