2

I am using some methods from my viewdata model in Spark, but it doesn't work properly. I thought it was working previously, but it appears to be crashing. Am I doing something wrong that I am unaware of?

        <if condition='model.GetServerRunning()' >
            <h1><a href="#">IT WORKS</a></h1>
        </if>

Also, can multiple classes be used from code in a Spark file, or can only the one be passed <viewdata model="namespace.class">? I see stuff on the Spark documentation like <viewdata currentProduct="Product"/> but I don't understand what that is pulling from.

4

1 回答 1

1

上面的 Sparkif语句应该这样写:

<if condition='Model.GetServerRunning()' >
    <h1><a href="#">IT WORKS</a></h1>
</if>

注意 中的大写“M” Model。将modelandModel视为 Spark 中的保留字,其中第一个(小写)在<viewdata>标记中用于定义强类型视图,第二个(大写)用作对该对象类型实例的引用,可以在整个视图中使用。Model但是每个视图只能声明一个实例。

您提到的第二件事是ViewData object DictionaryMVC2 中的松散类型,或者您可以ViewBag在使用新dynamic类型的 MVC3 中使用。您在第二个片段中所做的是提取一个被调用的实例并将其分配给一个object名为的局部变量。从那里你可以随心所欲地使用它。这样做只是为了支持MVC 附带的构造,而不是因为它实际上是一个好的设计。更广泛接受的正确设计是每个视图都有一个模型,这就是语法提供的。ProductcurrentProductViewDatamodel

显然,在某些极端情况下,您可能会同时使用这两种模型,但我通常每个视图都使用一个模型,并且在许多网站上都为我提供了很好的服务,而且我不能说我曾经被迫进入需要填补的位置ViewData Dictionary带有任意数据的。如果你这样做了,它通常表明你的 viewModel 设计中有异味。

希望有帮助,
罗布

于 2011-08-28T14:47:53.993 回答