在 ASP.NET C# 和 Razor 中的变量内编写 HTML 代码

Posted

技术标签:

【中文标题】在 ASP.NET C# 和 Razor 中的变量内编写 HTML 代码【英文标题】:Writing HTML code inside variable in ASP.NET C# and Razor 【发布时间】:2012-10-09 11:20:29 【问题描述】:

我是 ASP.NET C# 的新手,我遇到了一些问题。

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 将 "" 更改为 &amp;gt;&amp;lt;.. 你知道任何解决方案吗?

我还有一个问题,我可以在 PHP 之类的引号内插入变量吗?

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

【问题讨论】:

【参考方案1】:

如您所见,Razor 引擎 HTML 默认对字符串进行编码。为避免这种行为,只需使用Html.Raw():

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

编辑

要在字符串中呈现变量,我想你可以使用string.Format

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

虽然这看起来有点过头了(至少对于这个例子来说),但你可以写:

<div>hello @someVariable</div>

【讨论】:

谢谢老兄,它有效。另一个问题?我可以在php之类的引号内写一个变量吗?我会在 9 分钟内选出正确答案,再次感谢。 @Carasuman 没有问题,很高兴它有帮助 - 如果有帮助,请参阅上面的更新。 这也有效:&lt;span class="hidden" data-state="@(entry.Key)_Title"&gt; 查看haacked.com/archive/2011/01/06/…【参考方案2】:

对于 ASP.NET Core 6.0,您可以像这样使用 MarkupString:

@((MarkupString) yourString)

【讨论】:

以上是关于在 ASP.NET C# 和 Razor 中的变量内编写 HTML 代码的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Razor - C# 变量

asp.net mvc学习

ASP.NET Web Pages - 添加 Razor 代码

ASP.NET Core Razor 页面中的变量范围和 HTML 标记

ASP.NET Razor - C# 循环和数组

如何使用 ASP.NET Core 同时制作 Razor Page 和 C# 代码框架?