如何在MVC Razor模板的script标签src属性中拼接C#变量?
在MVC Razor中正确拼接变量到Script的Src属性里
嘿,这个问题我熟!你原来的写法之所以没生效,是因为在Razor的代码块(@{ })里直接写HTML标签的话,里面的@clientId不会被自动解析成变量值。给你两种靠谱的解决办法:
方法一:拆分代码块与HTML标签(推荐)
这种写法更符合Razor的语法规范,可读性也更强:
@{ string clientId = "1234567"; } <script id="AbcClient" src="https://myspecialjs/@clientId/client.js" type="text/javascript" async></script>
原理很简单:把变量定义放在代码块里,然后在代码块外的HTML标签中,Razor会自动识别@clientId并替换成对应的变量值,完美完成拼接。
方法二:在代码块内用Html.Raw构建输出
如果因为某些原因你必须在代码块内部输出这个script标签,可以用Html.Raw()方法来拼接字符串并输出HTML:
@{ string clientId = "1234567"; // 使用字符串插值(C# 6+支持) @Html.Raw($"<script id='AbcClient' src='https://myspecialjs/{clientId}/client.js' type='text/javascript' async></script>"); }
或者如果你用的是更早的C#版本,也可以用string.Format来拼接:
@{ string clientId = "1234567"; @Html.Raw(string.Format("<script id='AbcClient' src='https://myspecialjs/{0}/client.js' type='text/javascript' async></script>", clientId)); }
这里的Html.Raw()会告诉Razor引擎直接输出拼接好的HTML内容,而不是转义成文本。
内容的提问来源于stack exchange,提问作者I Love Stackoverflow
相关产品推荐
相关产品推荐

