C# 需要访问母版页上的ViewData。。。或其他选择

C# 需要访问母版页上的ViewData。。。或其他选择,c#,asp.net-mvc,model-view-controller,asp.net-mvc-2,master-pages,C#,Asp.net Mvc,Model View Controller,Asp.net Mvc 2,Master Pages,我在VS2010和.NET4.0中使用MVC2。我有一种情况,在这种情况下,我将有一堆局部视图,我需要它们都具有相同的模板。基本上,我需要它们都用相同的DIV(和其他垃圾)包装。我只想要一个地方来换这个房间。。。所以我用了母版页。它工作得很好,所有的局部视图都使用该主视图,如果我需要更改某些内容,这没有问题 问题空间:我需要一些视图特定的数据,在这种情况下,它是视图显示的记录的Id,显示在DIV的Id中。现在我意识到我可以创建另一个占位符,但我需要这个Id在10个位置,而不是1个位置 <d

我在VS2010和.NET4.0中使用MVC2。我有一种情况,在这种情况下,我将有一堆局部视图,我需要它们都具有相同的模板。基本上,我需要它们都用相同的DIV(和其他垃圾)包装。我只想要一个地方来换这个房间。。。所以我用了母版页。它工作得很好,所有的局部视图都使用该主视图,如果我需要更改某些内容,这没有问题

问题空间:我需要一些视图特定的数据,在这种情况下,它是视图显示的记录的Id,显示在DIV的Id中。现在我意识到我可以创建另一个占位符,但我需要这个Id在10个位置,而不是1个位置

<div id="<%: ViewObjectId %>">
  <asp:contentplaceholder id="ViewStuff" runat="server"/>
</div>

我曾尝试将Id添加到ViewData,但在MVC2中,ViewData似乎在操作中丢失

我可以创建一个调用子视图的父操作,但问题是它剥夺了拥有我想要的任何参数的灵活性。。。所有视图都必须使用相同的签名

有什么想法或建议吗?

不确定您所说的“尽管在MVC2中,ViewData似乎在运行中丢失了”是什么意思。ViewData就在那里,应该可以满足您的需要。不过,如果需要,您必须以
ViewData[“ViewObjectId”]
的身份访问它

如果这不起作用,您可以发布代码示例来显示您如何尝试设置ViewData值吗?

不确定您所说的“在MVC2中,ViewData似乎在运行中丢失了”是什么意思。ViewData就在那里,应该可以满足您的需要。不过,如果需要,您必须以
ViewData[“ViewObjectId”]
的身份访问它


如果这不起作用,您可以发布代码示例来显示您如何尝试设置ViewData值吗?

好的,如果我将此代码放入母版页,我会得到以下错误:错误3当前上下文中不存在名称“ViewData”OK,无需担心。谜团解开了。当我创建一个新的母版页时,它创建了一个Web表单母版而不是MVC母版。。。这仍然有效。然而,它并没有继承System.Web.Mvc.ViewMasterPage,而是继承了自己的代码隐藏。因此,我更改了顶部标签并删除了代码隐藏,这一切都更好了。:-)恭喜!我想提出这个建议,但后来想我会等着看你的代码。这是一个容易犯的错误。很高兴你把它整理好了。:)好吧,如果我把这段代码放到母版页中,我会得到以下错误:错误3当前上下文中不存在名称“ViewData”OK,不管怎样。谜团解开了。当我创建一个新的母版页时,它创建了一个Web表单母版而不是MVC母版。。。这仍然有效。然而,它并没有继承System.Web.Mvc.ViewMasterPage,而是继承了自己的代码隐藏。因此,我更改了顶部标签并删除了代码隐藏,这一切都更好了。:-)恭喜!我想提出这个建议,但后来想我会等着看你的代码。这是一个容易犯的错误。很高兴你把它整理好了。:)