C# ASP.NET-当服务器端脚本分隔符与标记中的文字内容组合出现时,为什么它们的行为会有所不同?
我试图理解为什么ASP.NET脚本分隔符C# ASP.NET-当服务器端脚本分隔符与标记中的文字内容组合出现时,为什么它们的行为会有所不同?,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我试图理解为什么ASP.NET脚本分隔符有时会被转义和呈现,而不是被替换,这取决于它们的位置和周围的标记,例如: 这将按预期工作,返回codebehindBASE\u URL变量或属性的内容作为页面标题: <title><%= BASE_URL %></title> 关于这个主题的wiki文章中没有涉及到这种微妙的差异:好的,这将是纯粹的猜测,但我想我还是会分享它。没有VS在手验证,所以希望你在发布前测试得足够好 首先,让我们忽略你的第一个例子,因为它是一种
有时会被转义和呈现,而不是被替换,这取决于它们的位置和周围的标记,例如:
这将按预期工作,返回codebehindBASE\u URL
变量或属性的内容作为页面标题:
<title><%= BASE_URL %></title>
关于这个主题的wiki文章中没有涉及到这种微妙的差异:好的,这将是纯粹的猜测,但我想我还是会分享它。没有VS在手验证,所以希望你在发布前测试得足够好 首先,让我们忽略你的第一个例子,因为它是一种不同的和简单的-它只是工作的预期。对于其余的示例,它们都是关于在双引号标记中声明代码呈现块的,模式似乎是:
- 如果代码渲染块中有引号,则会识别该块
- 如果没有引号,则无法识别块
和结尾的符号,则它会根据XML规则将它们转义为
和
,并且不会继续进行toke分析
响应。Write()
执行。如果未按预期找到clostig标记,则会出现语法错误<link href="<%= BASE_URL %>_/css/screen.css" rel="stylesheet">
“\uu/css/screen2.css”
是另一个带有
。因此,这被识别为代码渲染块,并被视为“\uu/css/screen2.css”
。与上一个示例相同
同样,这只是一个推测,似乎符合观察到的行为。如果这被证明是错误的,或者有更好的答案,我很乐意删除。好的,这将是纯粹的猜测,但我想我还是会分享它。没有VS在手验证,所以希望你在发布前测试得足够好 首先,让我们忽略你的第一个例子,因为它是一种不同的和简单的-它只是工作的预期。对于其余的示例,它们都是关于在双引号标记中声明代码呈现块的,模式似乎是:
- 如果代码渲染块中有引号,则会识别该块
- 如果没有引号,则无法识别块
和结尾的符号,则它会根据XML规则将它们转义为
和
,并且不会继续进行toke分析
响应。Write()
执行。如果未按预期找到clostig标记,则会出现语法错误<link href="<%= BASE_URL %>_/css/screen.css" rel="stylesheet">
“\uu/css/screen2.css”
是另一个带有
。因此,这被识别为代码渲染块,并被视为“\uu/css/screen2.css”
。与上一个示例相同
同样,这只是一个推测,似乎符合观察到的行为。如果这被证明是错误的,或者有更好的答案,我很乐意删除。您得到的错误是什么?“不工作”没有告诉我们任何事情服务器端标记和第2、3、4行中url路径其余部分之间的下划线看起来好像不属于那里。请提供更多信息(doctype/html/rest of page header、codebeard、results、messages)我编辑了您的问题以从“离题”投票中挽救出来,因为这让我自第一次学习ASP.NET以来一直感到困扰,而且是一个非常有效的问题。研究发现了许多关于代码呈现块的好文章(SO和其他),但没有一篇详细介绍这个特定问题。您遇到了什么错误?“不起作用”没有告诉我们任何事情服务器端标记和第2、3、4行中url路径其余部分之间的下划线看起来好像不属于那里。请提供更多信息(doctype/html/rest of page header、codebeard、results、messages)我编辑了您的问题以从“离题”投票中挽救出来,因为这让我自第一次学习ASP.NET以来一直感到困扰,而且是一个非常有效的问题。研究发现了许多关于代码渲染块主题的好文章(SO和其他),但没有一篇详细介绍这个特定问题。一旦证明这是正确的,应该将其作为旁注进行编辑-这是非常相关的。由于这种看似不稳定/不一致的行为,我总是不在标记中混合代码隐藏表达式和文字。razor语法非常聪明。一旦证明这是正确的,它应该作为一个旁注编辑成-这是非常相关的。由于这种看似不稳定/不一致的行为,我总是不在标记中混合代码隐藏表达式和文字。razor语法要聪明得多。
<link href="<%= BASE_URL %>_/css/screen.css" rel="stylesheet">
<link href="<%= "" + BASE_URL %>_/css/screen2.css" rel="stylesheet">