Бритвенная троичная логика выводит всю строку, а не значения модели? - PullRequest
0 голосов
/ 27 февраля 2019

Я работал с логическим оператором, который продолжает давать мне ошибку, поскольку есть синтаксическая ошибка, но я не могу найти, где находится эта синтаксическая ошибка?

Я в основном хочу переключаться между двумя наборами стилей, учитывая значениелогическое значение

        var imageStyles = Model.isSelected ? "background-position-x: Model.CropPositionX%; background-image: url(Model.ContentUrl);" : "background -position: Model.CropPosition%; background-image: url(Model.ContentUrl);";

, но когда я добавляю его в свой тег div, переменная imageStyles отображается как строка, а значения модели не принимаются ... Что здесь не так?

1 Ответ

0 голосов
/ 27 февраля 2019

Вам необходимо использовать '@', чтобы код интерпретировался как C #, а не как необработанная строка.Пример использования:

 var imageStyles = Model.isSelected ? "background-position-x: "+@Model.CropPositionX+"%; background-image: url("+@Model.ContentUrl+");" : "background -position:" + @Model.CropPosition+"%; background-image: url("+@Model.ContentUrl+");";

Вы также можете использовать интерполяцию строк, в зависимости от версии C #, используемой вашим механизмом просмотра бритвы.

В этом случае это будет выглядеть так (оченьчище, на мой взгляд):

 var imageStyles = Model.isSelected ? $"background-position-x: {Model.CropPositionX}%; background-image: url({Model.ContentUrl});" : "background -position: {Model.CropPosition}%; background-image: url({Model.ContentUrl});";
...