2011-08-16 79 views
1

我有2个Cotrollers。 第一个像这样设置ViewData属性 ViewData [“Error”] =“something”; 我可以在页面上显示此消息。 第二个控制器加载网格。 当我尝试从Cotroller中设置ViewData属性时,它不会显示在页面上。ViewData在ASP.NET MVC 3

你是为什么?我在这里做错了什么?

请让我知道。

谢谢!

+0

将模型传回控制器。 –

+0

我想从网格控制器的页面上显示的东西。所以我在ViewData中设置了一些东西,所以我可以在页面上显示它。这不起作用。 –

回答

1

对单个视图使用两个控制器是一个禁忌。

查看ViewModels以将所有必需的数据传递到您的视图。然后,您可以为网格创建一个PartialView,并将必要的模型传递给部分视图。当ViewModel不起作用时,考虑ViewData/ViewBag是最后的手段。

+0

那你为什么要问两个控制器? –

+0

这就是我整个页面的样子。3文本框,1个文件输入,1个提交Btn,1个Telerik网格。用户输入值到文本框中并选择要导入的1个文件。提交按钮需要这4件事,读取文件并用4个参数调用WCF服务。 (TXT1,TXT2,TXT3,FILDATA)。 WCF返回一个XML文件。我将它保存在磁盘临时位置上。这一切都发生在1个控制器事件中。现在网格事件被调用,它解析文件并在网格中显示结果。在这里,我想在ViewData中添加一些值,并希望在页面上显示该消息。 –

0

您是否试图使用两个单独的控制器来呈现相同的视图?如果是这样的话,你应该考虑一下,把你的“网格”的视图逻辑打破成一个局部视图,然后在你的主视图中进行渲染。

正如您所提到的“查看数据”两次,另一个需要考虑的项目是执行ViewModel Pattern。 Viewdata字典方法快速且相当容易实现。但是,它不是类型安全的,并且由于错字造成的错误不会在编译时被捕获。