C # ASP.NET MVC: однострочный пункт If в представлении?

2

У меня есть тривиальная проблема.. и не могу ее решить.

У меня это на мой взгляд:

<% if (!Model.DisplayText) { %> <%= Model.MyText %> <% } %>

код >

Как вы можете видеть, я использую 3x <% и% > . Это просто кричит, как плохой код. Но я не могу заставить эту работу работать в одной строке. Это вызывает всевозможные странные ошибки (например, точка с запятой отсутствует, и когда я добавляю ее, она бросает что-то еще):

<% if (!Model.DisplayText) { Model.MyText } %>

код >

Любая идея?!

  • 0
    один из них на самом деле пишет для просмотра контента ... это ваша проблема.
  • 2
    Просто обратите внимание, причина, по которой вы сталкиваетесь с проблемой отсутствия точки с запятой, заключается в том, что в отличие от «<%», который предназначен для встроенного кода, «<% =» предназначен для вывода и, скорее всего, преобразуется в вызов метода (что-то вроде страницы. напишите (Model.MyText);) когда страница проанализирована.
Показать ещё 1 комментарий
Теги:
asp.net-mvc

3 ответа

11
Лучший ответ

Попробуйте:

<%= Model.DisplayText ? "" : Model.MyText %>

или

<% if(!Model.DisplayText) Response.Write(Model.MyText); %>
  • 0
    Избитый ударом, приятный пост.
  • 0
    Решение троичного оператора было именно тем, что мне было нужно. Спасибо! PS В этом случае не будет точки с запятой, поэтому вы можете удалить ее для тех, кто ищет это решение. Еще раз спасибо!
Показать ещё 1 комментарий
1

Это:

 <%= foo %>

обычно эквивалентен:

 <% Response.Write(foo) %>

Итак, вы можете написать:

 <% if (!Model.DisplayText) { Response.Write(Model.MyText); } %>

но я не понимаю, что вы на самом деле получаете от этого. Ваш оригинальный код в порядке. Или вы можете использовать тернарный оператор, как предлагает OrbMan.

  • 0
    Вы пропускаете точку с запятой после вызова Response.Write по крайней мере, и это, вероятно, тот случай, когда скобки лучше не указывать.
1
в основном как писать Response.Write(ваши данные)  означает, что код будет выполнен, но он не собирается специально ничего писать. Вы можете использовать Response.Write внутри блока if, чтобы вывести нужные данные.   

Или пойдите с ответом OrbMan, он избил меня до него.

  • 0
    Все ответы были отличными :) Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню