Как правильно использовать тернарный оператор (:?) в шаблоне Razor?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно использовать тернарный оператор (:?) в шаблоне Razor?

Сообщение Anonymous »

Я создаю собственное мегаменю, которое будет использоваться на сайте Sitefinity. Я все еще изучаю C# и Razor, поэтому прошу прощения за любые ошибки в моих методах кода. Я использую начальную загрузку, чтобы выполнить большую часть тяжелой работы с CSS. В моем коде вы можете видеть, что я пытаюсь использовать тернарный оператор, чтобы проверить, есть ли в списке элементы для заполнения подменю. Если да, добавьте раскрывающийся список классов, если нет, добавьте пустое место или оставьте его пустым, чтобы класс не добавлялся. Я также использую тернарный оператор, чтобы проверить, выбрано ли мегаменю в задней части сайта. Что добавляет класс has-мегаменю. Я получаю следующую ошибку в браузере:

Код: Выделить всё

error CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Web.IHtmlString' and 'string'

Код: Выделить всё

@* code omitted... *@
[list]
@foreach (var item in Model.Items)
{
string linkClass = "nav-link";
string toggleAttribute = "";
string inlineEditingAttribute = "";

var navigateUrl = HyperLinkHelpers.GetDetailPageUrl(item, ViewBag.DetailsPageId, ViewBag.OpenInSamePage, Model.UrlKeyPrefix);
var subMenuItems = item.Fields.SubMenuItems as IEnumerable;
bool hasSubMenuItems = subMenuItems != null && subMenuItems.Any();
var relatedSubMenuItems = item.Fields.RelatedSubMenuItems as IEnumerable;
bool hasRelatedSubMenuItems = relatedSubMenuItems != null && relatedSubMenuItems.Any();
bool hasMegaMenu = hasSubMenuItems && subMenuItems.Any(subItem => subItem.MegaMenuSelection.ToHtmlString() ==  @Html.Raw("Yes"));

if (hasSubMenuItems)
{
linkClass += " dropdown-toggle";
toggleAttribute = "dropdown";
inlineEditingAttribute = Html.InlineEditingFieldAttributes("Title", "ShortText").ToHtmlString();
}

[*]    @(hasSubMenuItems ? "dropdown" : @Html.Raw(" "))
@(hasMegaMenu ? "has-megamenu" : @Html.Raw(" "))"
@Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id)>

[url=@navigateUrl]
@item.Fields.Title
[/url]

@* code omitted... *@

}
[/list]
@* code omitted... *@
Мне надоели разные варианты этого кода. Я могу сделать так, чтобы отображались основные элементы навигации и раскрывающиеся списки. Но когда я добавляю код, чтобы проверить, есть ли у элемента навигации раскрывающийся список или мегаменю. Кажется, это достаточно просто понять. Но это меня растоптало.


Подробнее здесь: https://stackoverflow.com/questions/791 ... r-template
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как правильно использовать тернарный оператор (:?) в шаблоне Razor?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Какая конструкция «if» быстрее — оператор или тернарный оператор?
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как использовать тернарный оператор в C#
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как использовать тернарный оператор в операторе echo в php
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Невозможно использовать тернарный оператор для назначения выражения Linq
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»