Написание HTML-кода внутри переменной в ASP.NET С# и Razor

Я новичок в ASP.NET С#, и у меня проблемы с некоторыми вещами.

В PHP я могу хранить HTML-код внутри переменной, например:

$list = "<li>My List</li>";
echo "<ul>{$list}</ul>"; // write <ul><li>My List</li></ul>

Я пробовал это в ASP.NET и Razor

string List = "<li>My List</li>";
<ul>@List</ul>

Но ASP изменяет "<" и " > " до &gt; и &lt;.. Вы знаете какое-либо решение для этого?

У меня есть другой вопрос: могу ли я вставить переменную внутри кавычек, например PHP?

echo "<ul>{$list}</ul>";

Ответ 1

Двигатель Razor HTML кодирует строки по умолчанию, как вы заметили. Чтобы избежать такого поведения, просто используйте Html.Raw():

<ul>@Html.Raw(List)</ul>

Edit

Чтобы отобразить переменную внутри строки, я полагаю, вы могли бы использовать string.Format:

@{ var someVariable = "world"; }
@string.Format("<div>hello {0}</div>", someVariable)

Хотя это кажется излишним (по крайней мере для этого примера), когда вы можете просто написать:

<div>hello @someVariable</div>