在.NET MVC4
项目中@Styles.Render
如何运作?
我的意思是,在@Styles.Render("~/Content/css")
调用哪个文件?
我的Content
文件夹中没有名为“css”的文件或文件夹。
答案 0 :(得分:448)
它正在调用特定包中包含的文件,该文件在BundleConfig
文件夹的App_Start
类中声明。
在该特定情况下,对@Styles.Render("~/Content/css")
的调用称为“〜/ Content / site.css”。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
答案 1 :(得分:34)
注意区分大小写。如果你有一个文件
/Content/bootstrap.css
然后将Bundle.config重定向到
.INCLUDE( “〜/内容/ Bootstrap.css”)
它不会加载CSS。
答案 2 :(得分:10)
派对有点晚了。但似乎没有人提到过
bundling& StyleBundle
的{{3}},所以......
@Styles.Render("~/Content/css")
拨打Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
反过来调用
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
有效地结合了& 缩小 bootstrap.css
& Site.css
到一个文件,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
<强>但是强> ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
仅当<{strong} debug
设置为false
中的Web.config
时。
否则bootstrap.css
&amp; Site.css
将单独提供
没有捆绑,也没有缩小:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
答案 3 :(得分:0)
src="@url.content("~/Folderpath/*.css")"
应该呈现样式
答案 4 :(得分:0)
正如App_start.BundleConfig中所定义的那样,它只是在调用
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
即使删除该部分也没有任何反应。
答案 5 :(得分:0)
Polo我不会在MVC中使用Bundles有多种原因。它在您的情况下不起作用,因为您必须在Apps_Start文件夹中设置自定义BundleConfig类。当您可以在html的头部简单添加样式时,这没有任何意义:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
您还可以将这些添加到Layout.cshtml或从您的所有视图调用并放入每个页面的部分类。如果样式发生变化,您可以轻松更改名称和路径,而无需重新编译。
在类中添加CSS的硬编码链接打破了UI和设计与应用程序模型分离的全部目的。您也不希望在c#中管理硬编码样式表路径,因为您不能再为不同的设备,主题等构建“皮肤”或单独的样式模型,如下所示:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
使用此系统和Razor,您现在可以从数据库或用户设置中切换皮肤路径,并通过动态更改路径来更改网站的整个设计。
15年前CSS的整个目的是为网站开发用户控制和应用程序控制的样式表“皮肤”,这样您就可以将UI外观与应用程序分开,并重新定位内容,而不是数据结构.....例如可打印版本,移动版,音频版,原始xml等
现在回到这个“老式”的硬编码路径系统,使用C#类,刚性样式(如Bootstrap),并将网站主题与应用程序代码合并,我们再次回归到如何构建网站1998年。
答案 6 :(得分:0)
我做了所有必要的事情以将捆绑添加到MVC 3网站(我是现有解决方案的新手)。 def count_dtype(dtype):
"""
dtype : datatype descr (list of strings / tuples, subdtypes rather than dtype object)
Return total number of elements in array of dtype
"""
sum = 0
for name, t, *shape in dtype:
if isinstance(t, str): ## base datatype
if shape:
sum += np.multiply.reduce(shape[0], dtype=np.int64)
else:
sum += 1
else: ## Subarray type
sum += np.multiply.reduce(shape, dtype=np.int64)*count_dtype(t)
return sum
def _recarray2string(a, options, separator=' ', prefix=""):
"""
Create a string representation of a record array
a : record array
separator : used by _array2string
prefix : used by _array2string
"""
options = np.get_printoptions()
threshold = options['threshold']
edgeitems = options['edgeitems']
size = count_dtype(a.dtype.descr)
items = np.multiply.reduce(a.shape)
if size*items > threshold/(2*edgeitems): ## Too big
if size > threshold: ## subtype is too large - how to handle?
newopt = options.copy()
newopt['threshold'] = options['threshold'] // (2*options['edgeitems'])
def fmt_subtype(r):
res = []
for sub in r:
if sub.dtype.names is not None:
res.append(fmt_subtype(sub))
else:
res.append(_array2string(sub, newopt, separator=separator, prefix=prefix))
return separator.join(res)
return separator.join(fmt_subtype(a[i]) for i in range(edgeitems)) + '\n...\n' + \
separator.join(fmt_subtype(a[a.shape[0]-i-1]) for i in range(edgeitems))
else: ## Subtype is small enough it's sufficient to truncate only sub-dtype
options = options.copy()
options['threshold'] = threshold // size
return _array2string_old(a, options, separator=separator, prefix=prefix)
else: ## Print as normal
return _array2string_old(a, options, separator=separator, prefix=prefix)
def _array2string(a, options , separator=' ', prefix=""):
"""
monkeypatched print function that allows truncating record arrays sensibly
"""
if a.dtype.names is not None:
return _recarray2string(a, options, separator=separator, prefix=prefix)
else:
return _array2string_old(a, options, separator=separator, prefix=prefix)
# Setup monkeypatching
_array2string_old = np.core.arrayprint._array2string
np.core.arrayprint._array2string = _array2string
对我不起作用。我终于发现我只是想念一个冒号。在母版页中:Styles.Render
对于<%: Styles.Render("~/Content/Css") %>
为什么在同一个页面上运行 没用冒号的原因,我仍然感到困惑。
答案 7 :(得分:0)
在您的web.config上将此设置为False
<compilation debug="false" targetFramework="4.6.1" />