簡體   English   中英

如何處理從SQL拋出的錯誤消息到controller.cs

[英]How do I handle error message thrown from SQL to 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
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我收到該錯誤消息。 但是如何在View上顯示呢? (.cshtml)?

'ex'存儲在ViewBag / TempData ,然后在View中顯示該ViewBag / TempData

PS:請原諒我,如果我做錯了,我對MVC知識不多。

一種可能的解決方案是在web.config中啟用自定義錯誤:

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

完成后,在Views / Shared中創建一個名為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>

現在,當引發異常時,您將在此自定義視圖中看到異常消息。 無需手動捕獲。

View您需要創建控件以顯示有關錯誤的消息-通常它將是干凈的或不可見的。 如果遇到錯誤,請在此控件中添加錯誤信息,使其可見。

在這里更改代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM