2016-11-14 2 views
1

Я Перенастройка старого сайта в ASP.Net MVC 5, у меня были связь, как это:: состояние в Бритве C#

<a href="/contact"><%=User.Identity.IsAuthenticated?"Support":"Contact Us"%></a> 

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

<a href="/contact">@if{User.Identity.IsAuthenticated){@Html.Raw("Support");}else{@HtmlRaw("Contact Us");}</a> 

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

ответ

4

Просто упаковка вашего трехкомпонентного выражения в @() должен работать.

<a href="/contact">@(User.Identity.IsAuthenticated ? "Support" : "Contact Us")</a> 

Edit:

Если вам нужно HTML-элементы, вы можете обернуть трехкомпонентную выражение в @Html.Raw().

т.е.

@Html.Raw(User.Identity.IsAuthenticated ? "<div>Support</div>" : "Contact Us") 
+1

Как есть некоторые HTML-код в моих строках (для иконок шрифта удивительных) Я видел, что я должен использовать 'Hml.Raw()', но когда нет HTML в нем. это работает отлично. Большое спасибо. –

+0

@AshkanMobayenKhiabani Да, это правильно. Хотя, если у вас есть элементы Html, я считаю, что вы можете просто сделать '@ Html.Raw (User.Identity.IsAuthenticated?)

": "Свяжитесь с нами") ', делая его более читаемым (см. [Этот ответ] (http: /stackoverflow.com/a/8145877/5743929)). –

+0

Да! это еще лучше. спасибо –

1

оператор вы имеете в виду, называется ternary operator, она используется, чтобы иметь встроенный, если заявления

В вашем примере, он может быть использованы как так

<a href="/contact">@(User.Identity.IsAuthenticated ? "Support" : "Contact Us")</a> 
0

Я думаю, что это один более читаемым.

@if(User.Identity.IsAuthenticated){ 
    <a href="/contact">Support</a> 
} 
else{ 
    <a href="/contact">Contact Us</a> 
} 
Смежные вопросы