我似乎无法掌握如何在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文件,现在可以使用了。谢谢!
答案 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