【问题标题】:ASP.NET MVC ViewData (using indices)ASP.NET MVC ViewData(使用索引)
【发布时间】:2010-09-08 21:00:13
【问题描述】:

我有一个使用 ASP.NET MVC Preview 3(从 Preview 2 解决方案升级而来)的工作解决方案,它使用无类型的 ViewMasterPage,如下所示:

public partial class Home : ViewMasterPage

在 Home.Master 上有这样的显示语句:

<%= ((GenericViewData)ViewData["Generic"]).Skin %>

但是,团队中的一位开发人员刚刚将程序集引用更改为 Preview 4。

在此之后,代码将不再像上面那样使用索引值填充 ViewData。

相反,ViewData["Generic"] 为空。

根据this question, ViewData.Eval("Generic") 有效,并且 ViewData.Model 也正确填充。

但是,此解决方案不使用打字页面等的原因是因为它是一种遗留解决方案。因此,通过这个相当大的解决方案并更新所有 .aspx 页面是不切实际的(特别是因为编译器没有检测到这种东西)。

我已尝试通过删除引用然后在项目的“bin”文件夹中添加对 Preview 3 程序集的引用来还原程序集。这并没有改变什么。我什至尝试将项目文件恢复到早期版本,但似乎仍然无法解决问题。

我还有其他使用相同技术的解决方案可以继续工作。

您有什么建议可以说明为什么它突然停止工作以及我该如何解决它(任何正确方向的提示将不胜感激)?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我们做出这个改变是因为我们希望 [] 索引器有点对称。 Eval() 方法使用反射并查看模型以检索值。索引器只查看直接添加到字典中的项目。

    【讨论】:

      【解决方案2】:

      我决定用 ViewData.Eval("blah") 替换 ViewData["blah"] 的所有实例。 但是,如果可能的话,我想知道这种变化的原因,因为:

      1. 如果它发生在我的其他项目中,能够修复会很好。
      2. 最好保留已部署的工作代码而不用这些更改覆盖。
      3. 很高兴知道我没有注意到其他任何变化。

      【讨论】:

        【解决方案3】:

        你是如何设置视图数据的?这对我有用:

        控制器:

        ViewData["CategoryName"] = a.Name;
        

        查看:

        <%= ViewData["CategoryName"] %>
        

        顺便说一句,我现在正在使用 Preview 5。但这对 3 和 4 有效...

        【讨论】:

          【解决方案4】:

          回复:瑞奇

          当我从 Controller 调用 View() 方法时,我只是传递了一个对象。

          我还注意到,在未更新任何内容的部署服务器上,ViewData.Eval 失败并且 ViewData["index"] 正常工作。

          在我的开发服务器上,ViewData["index"] 失败,ViewData.Eval 工作...

          【讨论】:

            【解决方案5】:

            是的,所以无论您传递到视图中的什么,都可以在视图中作为 ViewData.Model 访问。但如果你不做强类型视图,那将只是一个很好的旧对象......

            【讨论】:

            • 是的,我明白了。问题是 ViewData["blah"] 停止设置,我想知道为什么(猜测 MVC Preview 4 改变了这一点,但想确认)。我想我也想知道为什么我似乎无法撤消开发人员的参考更改
            猜你喜欢
            • 2010-10-02
            • 2023-03-26
            • 1970-01-01
            • 1970-01-01
            • 2010-09-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-07
            相关资源
            最近更新 更多