gpt4 book ai didi

c# - 显示生成的文本时 <% : . .. %> 与 <%= %> 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:33 25 4
gpt4 key购买 nike

我正在使用 C# 编写 MVC 应用程序。在这一特定部分中,我有一个条件开关用于导航以突出显示相应的选项卡。这是相关代码:

<script type="text/C#" runat="server">
string oController;
string oAction;
const string current = "class=\"current_page\"";

protected override void OnLoad(EventArgs e)
{
oController = ViewContext.RouteData.Values["controller"].ToString();
oAction = ViewContext.RouteData.Values["action"].ToString();

base.OnLoad(e);
}
</script>

<div id="menu">
<ul>
<li <%= (oController.Equals("Home") ? current : "") %>><a href="/">Home</a></li>
<li><a href="/CustomerManager/">Customer Manager</a></li>
<!-- <%: oController.Equals("Home") %> -->
<!-- <%: oAction %> -->
</ul>
</div>

在这一行 ( <li <%= (oController.Equals("Home") ? current : "") %>><a href="/">Home</a></li> ) 如果我使用 <%: %> ASP block 而不是 <%= %> (正如推荐的那样,因为后者很快就会被淘汰),生成的文本显示为

<li class=&quot;current_page&quot;><a href="/">Home</a></li> 

代替

<li class="current_page"><a href="/">Home</a></li>

发生这种情况的任何建议和/或原因?谢谢!

最佳答案

因为 <%:旨在对用户输入等数据进行编码。在您的情况下,这是自行生成的(受信任的)html,因此您不想想要对其进行编码; <%=是正确的用法。

<%:用于 <%:user.Name%> 之类的东西,这可以方便地防止其中包含 xss 等的恶意文本的问题。

关于c# - 显示生成的文本时 <% : . .. %> 与 <%= %> 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3680496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com