Выражение Spark if
выше должно быть написано так:
<if condition='Model.GetServerRunning()' >
<h1><a href="#">IT WORKS</a></h1>
</if>
Обратите внимание на заглавную букву 'M' в Model
.Думайте о model
и Model
как о зарезервированных словах в Spark, где первое (нижний регистр) используется в теге <viewdata>
для определения строго типизированного представления, а второе (верхний регистр) используется как ссылка наэкземпляр этого типа объекта, который может использоваться во всем вашем представлении.Но только один экземпляр Model
может быть объявлен для каждого представления.
Второе, что вы упомянули, - это свободно набираемый ViewData
object Dictionary
в MVC2, или вы можете использовать ViewBag
в MVC3, который используетновые dynamic
типы.То, что вы делаете во втором фрагменте, это извлечение экземпляра object
с именем Product
и присвоение его локальной переменной с именем currentProduct
.Оттуда вы можете использовать его как хотите.Это было сделано только для поддержки конструкции ViewData
, поставляемой с MVC, а не потому, что это действительно хороший дизайн.Более широко принятый правильный дизайн будет иметь одну модель для каждого представления, что обеспечивает синтаксис model
.
Очевидно, что существуют крайние случаи, когда вы можете использовать оба, но я обычно придерживаюсь одной модели для каждого представления.просмотр и хорошо послужил мне на многих сайтах, и я не могу сказать, что я когда-либо был вынужден занять такое положение, когда мне нужно заполнить ViewData Dictionary
произвольными данными.Если вы это сделаете, это, как правило, индикатор запаха в вашем дизайне viewModel.
Надеюсь, это поможет,
Роб