【问题标题】:Custom error showing in MVC5MVC5 中显示的自定义错误
【发布时间】:2016-02-26 15:49:47
【问题描述】:
我正在使用 EF6.5 和 MSSQL 制作 MVC5 应用程序。在特定视图中,我想保存一个包含员工信息的页面,我已经可以成功地做到这一点。但是员工的用户名有一个 UNIQUE 约束(显然)。
在我目前的情况下,如果用户试图将他们的用户名更改为已经存在的用户名,应用程序只会抛出异常,其中包含输入违反数据库中的约束的信息。
由于我对所有这些 web 开发语言不是很流利,我想问一下是否有一种简单的方法可以在提交视图时检查用户名是否已经存在,最重要的是,向员工显示一个错误,说他必须选择一个不同的用户名,最好不要发回控制器,但如果必须这样做,那就这样吧。
提前致谢,我想看看您的意见和/或解决方案。
【问题讨论】:
标签:
sql-server
asp.net-mvc
model-view-controller
【解决方案1】:
您通常不应允许用户更改其用户名,部分原因是出于这个原因。如果有可能,它应该是一项管理任务。如果您正在谈论显示名称(或给定名称,“现实生活”名称),那么它应该是可更改的,但可能没有 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 中的内部集合更安全,因为它可能在给定时刻不同步。此功能还可用于其他帐户创建目的。
在实际尝试更新数据库之前,您的界面应该有一些连接来调用此函数 - 可能是一个按钮,也可能是当字段失去焦点时,诸如此类。