2011-03-17 54 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