[英]Custom Relative Path In Asp.Net Core MVC
Is there any possibility to have a custom relative path same as example at below: 是否有可能在下面具有与示例相同的自定义相对路径:
In Razor: 在剃刀:
<script src="%/scripts/theme.js" type="text/javascript"></script>
And Result: 结果:
<script src="/themes/default/scripts/theme.js" type="text/javascript"></script>
Define New PATH style same as %/
or */
or $/
定义与%/
或*/
或$/
相同的新PATH样式
Attention: I KNOW ABOUT ~/
(default relative path). 注意:我知道关于~/
(默认相对路径)。 I'm talking about how can I Define NEW ONE? 我在谈论如何定义新的?
Finally I found the solution. 最后我找到了解决方案。 Please take a looks how Microsoft had implement it at link below: https://github.com/aspnet/Mvc/blob/1c4b0fcdf38320b2f02c0bb7c31df5bd391ace07/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs#L47 请查看Microsoft如何在以下链接中实现它: https : //github.com/aspnet/Mvc/blob/1c4b0fcdf38320b2f02c0bb7c31df5bd391ace07/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs#L47
I had take a copy of this class and I renamed that to this: 我已经拿了这个类的副本,我将其重命名为:
[HtmlTargetElement("link", Attributes = "[href^='%/']", TagStructure = TagStructure.WithoutEndTag)]
[HtmlTargetElement("script", Attributes = "[src^='%/']")]
....
public class ThemeUrlResolutionTagHelper : TagHelper
{
/*Implement tag helper here*/
}
And before creating trimmed string I insert my Theme URL 在创建修剪过的字符串之前,我插入主题网址
url = url.Remove(start, 2).Insert(start, $"~/themes/{Theme.Key}/");
var trimmedUrl = CreateTrimmedString(url, start);
And I changed the ~ to % in FindRelativeStart
method 我在FindRelativeStart
方法中将〜更改为%
// Before doing more work, ensure that the URL we're looking at is app-relative.
if (url[start] != '%' || url[start + 1] != '/')
{
return -1;
}
And Done! 并做了!
You need to use ~
(tilde). 你需要使用~
(代字号)。 There is no %
operator for paths: 路径没有%
运算符:
<script src="~/scripts/theme.js" type="text/javascript"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.