2

Sparkのviewdataモデルのいくつかのメソッドを使用していますが、正しく機能しません。以前は動作していたと思いましたが、クラッシュしているようです。私は気づいていない何か間違ったことをしていますか?

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

また、Sparkファイルのコードから複数のクラスを使用できますか、それとも1つだけを渡すことができます<viewdata model="namespace.class">か?Sparkのドキュメントには次のようなもの<viewdata currentProduct="Product"/>がありますが、それが何から引き出されているのかわかりません。

4

1 に答える 1

1

上記の Sparkifステートメントは次のように記述します。

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

の大文字の「M」に注目してくださいModelmodeland は Spark の予約語と考えてくださいModel。最初 (小文字) は<viewdata>厳密に型指定されたビューを定義するタグで使用され、2 番目 (大文字) はそのオブジェクト型のインスタンスへの参照として使用されます。ビュー全体で使用されます。ただし、Modelビューごとに宣言できる のインスタンスは 1 つだけです。

ViewData object Dictionary2番目に言及するのは、 MVC2で緩く型付けされているかViewBag、新しいdynamic型を利用するMVC3で使用できます。2 番目のスニピットで行っていることは、object呼び出された のインスタンスを取り出し、Productそれを というローカル変数に代入することcurrentProductです。そこから好きなように使えます。これは、MVC に付属の構成をサポートするためにのみ行われたViewDataものであり、実際に優れた設計であるという理由ではありません。より広く受け入れられている正しい設計は、model構文が提供するビューごとに 1 つのモデルを持つことです。

両方を使用する極端なケースもありますが、私は通常、ビューごとに 1 つのモデルに固執し、多くのサイトでうまく機能してきました。ViewData Dictionary任意のデータを使用します。もしそうなら、それは通常、viewModel のデザインに臭いがあることを示しています。

お役に立てば幸いです、
ロブ

于 2011-08-28T14:47:53.993 に答える