Методы Spark Model дают сбой в операторе IF - PullRequest
2 голосов
/ 27 августа 2011

Я использую некоторые методы из моей модели viewdata в Spark, но она не работает должным образом. Я думал, что это работало ранее, но это, кажется, сбой. Я делаю что-то неправильно, о чем я не знаю?

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

Кроме того, можно ли использовать несколько классов из кода в файле Spark или можно передать только один класс <viewdata model="namespace.class">? В документации Spark я вижу такие вещи, как <viewdata currentProduct="Product"/>, но я не понимаю, из чего это происходит.

1 Ответ

1 голос
/ 28 августа 2011

Выражение 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.

Надеюсь, это поможет,
Роб

...