Car*_*arl 6 asp.net asp.net-mvc resources orchardcms asp.net-mvc-3
我正在写一个Orchard主题,我希望能够找到一些与主题一起打包的资源(图像/ swfs等).
这样做的最佳方式是什么?
我已经看过ResourceManifest文件,使用builder.Add.DefineResource,但我似乎无法在视图中找到它的对应物.或者我只是把完整的路径?
任何提示?
干杯卡尔
如果需要定义新资源(脚本或样式表):
例如:
public class ResourceManifest : IResourceManifestProvider {
public void BuildManifests(ResourceManifestBuilder builder) {
var manifest = builder.Add();
manifest.DefineStyle("MyStyle").SetUrl("mystyle.css");
manifest.DefineScript("MyScript").SetUrl("myscript.js").SetDependencies("jQuery");
}
}
Run Code Online (Sandbox Code Playgroud)
这定义了一个可以在视图中重用的样式和脚本.网址与您所在的主题/模块中的/ Styles(或/ Scripts)文件夹相关.
如果您想重用已经定义的一些资源(在所有已启用的模块和主题中),那么就像编写一样简单:
...
@{
Style.Require("MyStyle").AtHead();
Script.Require("MyScript").AtFoot();
}
...
Run Code Online (Sandbox Code Playgroud)
在你的.cshtml视图文件中.上面的例子会在适当的位置注入mystyle.css和myscript.js(最后一页的页眉/页脚).
我为同样的问题打了一个扩展方法:
public static string ResourceUrl(this HtmlHelper helper, string resourceType, string resourceName)
{
var manager = helper.Resolve<IResourceManager>();
var settings = new RequireSettings { Type = resourceType, Name = resourceName, BasePath = resourceType };
var resource = manager.FindResource(settings);
var context = new ResourceRequiredContext { Resource = resource, Settings = settings };
var url = context.GetResourceUrl(settings, "/");
return url;
}
Run Code Online (Sandbox Code Playgroud)
资源清单定义:
manifest.DefineResource("Content", "MyImage").SetUrl("Content/myimage.png");
Run Code Online (Sandbox Code Playgroud)
查看用法:
@Html.ResourceUrl("Content", "MyImage")
Run Code Online (Sandbox Code Playgroud)
它没有经过良好测试,可能会使用一些错误处理,但它适合我.
| 归档时间: |
|
| 查看次数: |
4463 次 |
| 最近记录: |