Spark View引擎和使用viewdata混淆

时间:2010-02-19 03:59:54

标签: asp.net-mvc spark-view-engine

我似乎无法掌握如何在spark视图引擎中使用viewdata结构。我的控制器中有以下代码:

        // Retrieve the project list from the database
        var projects = from p in _context.Repository<project>()
                       orderby p.name ascending
                       select p;

        return View(projects.ToList<project>());

此代码有效,因为我有单元测试返回正确的项目,我的非spark视图工作得很好。现在我正在尝试切换到Spark View Engine,我只是对语法感到困惑。作为旁注,我已经验证了火花视图引擎正在工作并正在阅读我的.spark视图。

以下是我在list.spark视图中使用的内容:

<h2>Available Projects</h2>
<viewdata model="IList[[project]]"/>
Count: ${model.count}

渲染此视图时,会发生以下错误:

.../List.Spark(3,16): error CS0103: The name 'model' does not exist in the current context 

这是指model.count行。为什么这不起作用?我尝试将项目列表传递给ViewData [“projects”](并在项目的spark代码中替换模型),我得到了相同的错误(取出了projects.count的model.count)。

这可能是愚蠢的事,但我似乎无法弄清楚这一点。

更新

我修好了。似乎VS 2010 Beta 2创建的MVC2 web.config文件很糟糕。我使用了VS 2010 RC创建的MVC2 web.config文件,现在可以使用了。谢谢!

1 个答案:

答案 0 :(得分:1)

我想你想要这个:

<h2>Available Projects</h2>

<viewdata model="IList[[project]]"/>
Count: ${ViewData.Model.Count}

或者这个:

<h2>Available Projects</h2>

<viewdata model="IList[[project]]"/>
<var model="ViewData.Model" />
Count: ${model.Count}

viewdata元素声明ViewDataDictionary中条目的类型。对于“model”,这实际上是声明ViewDataDictionary的Model属性的类型。

另请注意,这些表达式和类型名称是C#代码,因此区分大小写。

编辑:语法已更新为1.0稳定版本。

文档中的参考 - using view data