2011-03-17 27 views
2

我正在使用MVC3。我在_Layout.cshtml文件中創建了一個用於顯示錯誤消息的DIV,並且我在視圖文件夾中創建了一個C#類ErrorMessage。訪問Div Id放在_Layout MVC3

DIV在_layout.cshtml文件:


這是一流的ErrorMessage代碼:

public static class ErrorMessage 
    { 
     public static void Show(string message) 
     { 
      ErrorMessageDiv.InnerText = message; 
     } 
     public static void Hide() 
     { 
     } 
    } 

在類的ErrorMessage提示錯誤

「錯誤信息 當前上下文中不存在Div「

任何想法如何在MVC3中做到這一點?

+2

您必須記住,MVC3不像常規WebForms那樣使用「代碼隱藏」或回發。 View(cshtml)要求的所有信息必須從控制器傳遞到視圖(或使用javascript異步) – 2011-03-17 13:42:57

回答

2

如何在_layout.cshtml中使用特定鍵在TempData集合中查找錯誤消息來創建一段代碼。

然後在您的控制器中,如果發生了錯誤,請將錯誤文本添加到TempData中並將其呈現。

下面是一個例子:

在你的控制器,檢查是否有一些錯誤,並添加到TempData:

public ActionResult Index() 
    { 
     bool isError = true; 

     if (isError) 
     { 
      TempData["ErrorMessage"] = "There has been an error"; 
      // Or if you want to use the ErrorMessage class 
      // ErrorMessage.ShowError("There has been an error"); 
     } 
     return View(); 
    } 

然後在你的主_layout.cshtml模板

<body> 

@if (TempData["ErrorMessage"] != null) 
{ 
    <div class="Error"> 
     @TempData["ErrorMessage"] 
    </div> 
} 

@RenderBody() 

TempData將在訪問後從本身中刪除值o NCE。

如果您仍然希望使用ErrorMessage類,則更改爲包裝TempData。

public static class ErrorMessage 
{ 
    public static void ShowError(string message) 
    { 
     TempData["ErrorMessage"] = message; 
    } 
} 
+0

在我的應用程序中,我有許多控制器和模型。其實我想創建一個類,用於在佈局文件中顯示Div內顯示錯誤消息。我不這樣做,如果它可能在MVC3? – user664195 2011-03-17 12:30:33

+0

@ user664195。我已經更新了答案,以包含現有的ErrorMessage類。在MVC中,無法獲取視圖元素,因爲該模式規定控制器和模型不應該對視圖有任何瞭解。 – Swaff 2011-03-17 13:23:13