2014-02-27 34 views
0

我想检查重复的用户名是否存在。如何处理从SQL向controller.cs抛出的错误消息

在我AddNewUser函数存储过程

我用下面的代码

DECALRE @error nvarchar(500) 
IF EXISTS(SELECT EMAIL FROM [USERSTABLE] WHERE Email= @Email) 
set @error = 'User already exists with email address '[email protected] 
RAISERROR (@error,16,1);  

现在,我要赶在UserNameController.cs

try 
{ 
using (SqlConnection connection = new SqlConnection(connectionString)) 
       { 
        connection.Open(); 
        using (SqlCommand cmd = new SqlCommand("sp_CreateNewUser", connection)) 
        { 
         cmd.CommandType = CommandType.StoredProcedure; 

      //some parameters 
      cmd.ExecuteScalar(); 
} 

catch(Exception ex) 
{throw ex;} 

现在ex我此错误信息获取该错误消息。 但如何在视图上显示它? (.cshtml)?

回答

0

View上,您需要创建控件以显示有关错误的消息 - 通常它会是干净的或不可见的。如果出现错误 - 在此控件中输入错误信息并使其可见。

这里更改你的代码

catch(Exception ex) 
{/*there must be code to show message*/} 
1

如何将'ex'存储在ViewBag/TempData中,然后在View中显示它。

上校:对不起,如果我错了,我对MVC知之甚少。

0

一个可能的解决方案是使在web.config中的自定义错误:

<system.web> 
    <customErrors mode="On" /> 
</system.web> 

一旦做到这一点,建立/浏览次数名为Error.cshtml一个新视图共享:

@model System.Web.Mvc.HandleErrorInfo 

<!DOCTYPE html> 
<html> 
<head> 
    <title>Error</title> 
</head> 
<body> 
    <h2> 
     Sorry, an error occurred while processing your request. 
    </h2> 
    <p>Controller Name: @Model.ControllerName</p> 
    <p>Action Name : @Model.ActionName</p> 
    <p>Message: @Model.Exception.Message</p> 
</body> 
</html> 
</html> 

现在您将在引发异常时在此自定义视图中看到异常消息。无需手动捕捉它。