MVC 网址帮助程序生成和
本文关键字:程序生成 帮助 MVC | 更新日期: 2023-09-27 18:36:06
我有这个助手:
public static class TestHelper
{
public static string Test(this UrlHelper helper)
{
var ret = "/Test?par1=1&par2=2";
return ret;
}
}
我从_Layout.cshtml视图调用它
<script src="@Url.Test()" type="text/javascript"></script>
渲染的结果是:
<script src="/Test?par1=1&par2=2" type="text/javascript"></script>
但我需要:
<script src="/Test?par1=1&par2=2" type="text/javascript"></script>
为什么要添加"&"字符?我尝试使用"MvcString"重新调整,但结果是一样的
感谢您的帮助!
从帮助程序返回的任何正常string
都将被 html 转义。返回MvcHtmlString
以绕过转义:
public static MvcHtmlString Test(this UrlHelper helper)
{
var ret = "/Test?par1=1&par2=2";
return MvcHtmlString.Create(ret);
}
将转义作为默认值,并需要明确的选择退出,大大提高了开发人员没有想到转义的所有位置的安全性。
将其更改为
public static HtmlString Test(this UrlHelper helper)
我在帮助程序函数中添加脚本标签时遇到了问题:
public static class TestHelper
{
public static HtmlString Test(this UrlHelper helper)
{
var ret = "/Test?par1=1&par2=2";
var scriptTag = string.Format("<script src='"{0}'" type='"text/javascript'"></script>", ret);
return new HtmlString(scriptTag);
}
}
但我不明白为什么 Razor 在标签值内对结果进行编码。
谢谢!