我正在尝试将CSS文件动态渲染到我的视图中,但该文件的部分位置是在javascript变量中。
目前我有:
@section Styles {
@{
<link href="@Url.Content(Model.CssPath)" rel="stylesheet" type="text/css" />
}
}
但我需要在路径中包含变量,如下所示:
@section Styles {
@{
var pathPrefix = "somePath/";
<link href="@Url.Content(pathPrefix + Model.CssPath)" rel="stylesheet" type="text/css" />
}
}
我理解在javascript变量存在之前评估服务器端代码,那么我怎么做到这一点呢?
答案 0 :(得分:1)
首先 - 为什么混合客户端/服务器端代码?
您不能将JS变量与服务器端生成的内容一起使用,因为 - 如您所说 - 它是在客户端的浏览器访问JS代码之前在服务器上执行的。这是预期的行为。
如果可以在服务器端确定此变量值,则应将其移动到那里。
如果必须在客户端生成,您可以使用<link>
生成document.createElement('link');
代码,但对我来说似乎很奇怪:))
答案 1 :(得分:0)
我没有尝试通过剃刀视图添加样式表,而是将csspath放入javascript变量中,然后使用jquery将其与pathPrefix组合并以这种方式附加样式表。
像......那样......<script>
var cssPath = @Model.cssPath;
var pathPrefix = "www.";
$('head').append('<link rel="stylesheet" type="text/css" href="'+pathPrefix+cssPath+'">');
</script>