在MVC5中显示自定义错误

时间:2016-02-26 15:49:47

标签: sql-server asp.net-mvc model-view-controller

我正在使用EF6.5和MSSQL制作MVC5应用程序。在特定视图中,我想保存一个包含员工信息的页面,我已经可以成功完成。但是对员工的用户名有一个UNIQUE约束(显然)。

在我目前的情况下,如果用户尝试将其用户名更改为已存在的用户名,则应用程序会抛出一个异常,其中包含输入违反数据库约束的信息。

由于我对所有这些网络开发语言都不是很流利,我想询问是否有一种简单的方法可以在提交视图时检查用户名是否已经存在,最重要的是,向员工显示错误说明他必须选择一个不同的用户名,最好不要回帖给控制器,但如果必须发生,那就这样吧。

提前致谢,我希望看到您的意见和/或解决方案。

1 个答案:

答案 0 :(得分:0)

您通常不应允许用户更改其用户名,部分原因是这样。如果它可能,它应该是一项管理任务。如果您正在谈论显示名称(或给定名称,“现实生活”名称),那么这应该是可更改的,但可能没有UNIQUE约束。没有什么可以阻止你的公司雇用两个同名的人。

也就是说,如果您想允许某人更改对其具有唯一约束的字段,您应该提供某种接口来检查所需的名称是否可用。这可以是EF使用的自定义SQL过程,例如:

CREATE FUNCTION fn_CheckEmployeeName
(
    @empName VARCHAR(100) -- match this to the data type of the column
)
RETURNS BIT
AS
BEGIN
    IF EXISTS(SELECT 1 FROM EmployeeTable WHERE UserName = @empName)
        RETURN 1;
    RETURN 0;
END

如果您有许多客户端(不一定使用实体框架),这很好,并且EF应该能够连接到此功能。它也应该比检查EF中的内部集合更安全,它可能在给定时刻不同步。此功能还可用于其他帐户创建目的。

在实际尝试更新数据库之前,你的界面应该有一些线路来调用这个功能 - 可能是一个按钮,也许是当场失去焦点时,有点像这样。