Jos*_*eph 6 embedded-resource razor asp.net-mvc-3
我正在将一些代码从ASPX视图引擎迁移到Razor,我遇到了障碍.
我有这个代码:
<link rel="Stylesheet" type="text/css" href="
<%=Page.ClientScript.GetWebResourceUrl
(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector),
"DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")%>" />
Run Code Online (Sandbox Code Playgroud)
这里的问题是,使用Razor,我没有Page属性.
所以我退后一步,我正在看这个想知道:在Razor中获取嵌入式资源的正确方法是什么?
我花了很多时间试图找到关于这个主题的解决方案,但除了"在帮手中包装一个新的页面"之外,我还没有找到任何其他的东西.
这是唯一的方法吗?还是有更正确的东西?
遗憾的是,Web资源与webforms基础架构紧密相关,如果没有它,很难重用它们.所以有点hacky但你可以写一个帮手:
public static class UrlExtensions
{
public static string WebResource(this UrlHelper urlHelper, Type type, string resourcePath)
{
var page = new Page();
return page.ClientScript.GetWebResourceUrl(type, resourcePath);
}
}
Run Code Online (Sandbox Code Playgroud)
并在你的剃刀视图中:
<link rel="stylesheet" type="text/css" href="@Url.WebResource(typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), "DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")" />
Run Code Online (Sandbox Code Playgroud)
另一种可能性是编写一个自定义HTTP处理程序/控制器,它将从程序集中读取嵌入的资源,并通过设置正确的内容类型将其传递给响应.
| 归档时间: |
|
| 查看次数: |
2184 次 |
| 最近记录: |