是否有可能让自定义相对路径与下面的示例相同:
在剃刀中:
<script src="%/scripts/theme.js" type="text/javascript"></script>
结果:
<script src="/themes/default/scripts/theme.js" type="text/javascript"></script>
定义与%/
或*/
或$/
注意:我知道~/
(默认相对路径)。我在谈论如何定义新的?
答案 0 :(得分:1)
最后我找到了解决方案。 请查看Microsoft如何在以下链接中实现它: https://github.com/aspnet/Mvc/blob/1c4b0fcdf38320b2f02c0bb7c31df5bd391ace07/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs#L47
我已经拿了这个类的副本,我将其重命名为:
[HtmlTargetElement("link", Attributes = "[href^='%/']", TagStructure = TagStructure.WithoutEndTag)]
[HtmlTargetElement("script", Attributes = "[src^='%/']")]
....
public class ThemeUrlResolutionTagHelper : TagHelper
{
/*Implement tag helper here*/
}
在创建修剪过的字符串之前,我插入主题网址
url = url.Remove(start, 2).Insert(start, $"~/themes/{Theme.Key}/");
var trimmedUrl = CreateTrimmedString(url, start);
我在FindRelativeStart
方法
// Before doing more work, ensure that the URL we're looking at is app-relative.
if (url[start] != '%' || url[start + 1] != '/')
{
return -1;
}
完成了!
答案 1 :(得分:0)
您需要使用~
(代字号)。路径没有%
运算符:
<script src="~/scripts/theme.js" type="text/javascript"></script>