我在Spark中使用了我的viewdata模型中的一些方法,但它无法正常工作。我以为它以前工作,但它似乎崩溃了。我做错了,我不知道吗?
<if condition='model.GetServerRunning()' >
<h1><a href="#">IT WORKS</a></h1>
</if>
此外,可以从Spark文件中的代码中使用多个类,还是只能传递一个<viewdata model="namespace.class">
?我在Spark文档中看到了<viewdata currentProduct="Product"/>
之类的内容,但我不明白它是从哪里来的。
答案 0 :(得分:1)
上面的Spark if
语句应该这样写:
<if condition='Model.GetServerRunning()' >
<h1><a href="#">IT WORKS</a></h1>
</if>
注意Model
中的大写'M'。将model
和Model
视为Spark中的保留字,其中第一个(小写)用于<viewdata>
标记以定义强类型视图,第二个(大写)用作对象类型实例的引用,可以在整个视图中使用。但是每个视图只能声明一个Model
实例。
你提到的第二件事是MVC2中松散类型的ViewData
object Dictionary
,或者你可以在MVC3中使用ViewBag
,它使用新的dynamic
类型。你在第二个snippit中正在做的是拔出一个名为object
的{{1}}实例并将其分配给一个名为Product
的局部变量。从那里你可以随意使用它。这只是为了支持MVC附带的currentProduct
构造,而不是因为它实际上是一个好的设计。更广泛接受的正确设计是每个视图具有单个模型,这是ViewData
语法提供的。
显然有两种情况你可以同时使用这两种情况,但我通常坚持每个视图一个模型,并且在许多网站上都很好用,我不能说我曾经被迫进入我需要的位置使用任意数据填充model
。如果这样做,它通常是viewModel设计中气味的指示器。
希望有所帮助,
罗布