Вспомогательный параметр Razor html показывает сообщение об использовании избыточного условного троичного выражения

Почему появляется сообщение Visual Studio об использовании избыточного условного тернарного выражения, когда есть выражение мыши над выражением (также выражение «true : false» имеет более низкую непрозрачность). Говорит ли это мне о том, что я могу написать как-то меньше кода, чтобы получить то, что я хочу (если ViewBag.CMSClientStatus равен "Действующий", то проверьте радио)?

@Html.RadioButton("ClientStatus", "Real",  ViewBag.CMSClientStatus == "Действующий" ? true : false, new { @readonly = true })

Снимок экрана


person olly    schedule 30.06.2015    source источник
comment
Почему вы вообще хотите использовать тернарный? вы скучаете по скобкам или что-то в этом роде?   -  person M.kazem Akhgary    schedule 30.06.2015
comment
Что вы пытаетесь сделать? Лучшее предположение состоит в том, что вы хотите сделать элемент управления доступным только для чтения, если ViewBag.CMSClientStatus == "Действующий" (в этом случае он должен быть @Html.RadioButton("ClientStatus", "Real", ViewBag.CMSClientStatus == "Действующий" ? new { @readonly = true }: null)   -  person    schedule 01.07.2015


Ответы (3)


Выражение ViewBag.CMSClientStatus == "Действующий" уже возвращает true или false. Тернарный оператор ничего не добавляет к вашей логике, он избыточен, как предлагает Visual Studio.

person Claudio Redi    schedule 30.06.2015

Вместо:

ViewBag.CMSClientStatus == "Действующий" ? true : false

Просто используйте:

ViewBag.CMSClientStatus == "Действующий"

Оператор равенства (==) уже возвращает true или false, поэтому условный оператор не нужен.

person Andrew Whitaker    schedule 30.06.2015
comment
ждать. это самая простая вещь в С#. как он мог писать код, если он не знает, что == возвращает true и false (и он знает троицу?!). я думаю, что он пропустил круглые скобки или что-то в этом роде - person M.kazem Akhgary; 30.06.2015

Я написал, как это было предложено в предыдущих двух ответах. Но потом вылезла ошибка: "Методы расширения не могут быть динамически отправлены".

Снимок экрана

Ответ был найден здесь. Мне нужно привести динамический тип к логическому типу. Моя последняя запись:

@Html.RadioButton("ClientStatus", "Потенциальный",  (bool) (ViewBag.CMSClientStatus == "Потенциальный"), new { @readonly = true })   
person olly    schedule 01.07.2015