2010-06-07 31 views
0

在ASP.NET MVC中,有这些称为视图模板的html片段,当它们的匹配数据出现在屏幕上时,它们就会出现。例如,如果您有一个客户订单并且它有一个供应商地址,则供应商地址视图模板会显示数据填充。CSS:可以通过html文档中途定义样式?

不幸的是,这些不能访问“MasterPages”,也不知道他们的CSS环境。

不是用样式标签加载它们,有没有什么办法可以创建部分CSS文件,这些文件可以用于特定的html代码片段,一种内嵌CSS样式部分?

这将是非常好的扑通下来就在我们渲染局部视图:

<style type="text/css"> 
    input { margin: .2em .2em; 
      overflow: hidden; 
      width: 18.8em; 
      height: 1.6em; 
      border: 1px solid black;} 
</style> 

有在特定HTML代码段的15个左右的输入字段的格式相同。这些被换出,所以输入字段的位置改变。这也可能意味着在每个局部视图上重置CSS。

回答

2

我的事情,一个想法是将包括额外的内容部分在母版页

<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <asp:ContentPlaceHolder ID="CssContent" runat="server" /> 
</head> 

Head这样做,你就可以注入的具体样式每个视图。

编辑:张贴后我认为上述不是你所指的。你可能会考虑滚动自己ViewUserControl类似于Script & CSS Registration Helper in ASP.NET MVC?

+0

因此,如果我们有20个部分视图(.ascx文件)并且每个想要将内容添加到html头部,那么您会怎么做?像(面板)Master.FindControl(“CssContent”)。someFunctionToAppendContent()? – 2010-06-07 20:17:29

+0

@Dr Zim - 我看到下面的评论谈到.ascx控件,我必须承认我错过了那部分,所以我的回答可能不正确。上面的解决方案适用于'ViewPage'(如果我没有弄错)。按照我现在的理解,解释这个问题 - 我有多个.ascx控件,它们都有独特的CSS样式。样式是在每个控制文件中定义的。我希望CSS成为文档头部的一部分,而不是分散在我的页面的HTML中。 – Ahmad 2010-06-08 18:30:49

+0

@Dr Zim - 另一个选择是创建你自己的t4模板或者有一个'ViewModel',它包含一个对css文件的引用,然后你可以将它包含在Head中。我会根据你的回应更新答案.. – Ahmad 2010-06-08 18:33:11

1

为什么没有在部分视图中引用的css文件,或者我是否在提出问题的要点?

+0

每个视图都有自己的css文件。将相关的CSS保留在部分视图的文本中而不是每个单独的文本文件将是很好的。我们不知道给定的html页面会出现哪个局部视图。 – 2010-06-07 05:43:41

+0

你可以参考一个CSS文件约1/2的HTML文件的正文?这基本上与我所描述的相同,只是我想将CSS保留在与部分视图(html片段)相同的文本文件中。 – 2010-06-07 05:46:25

+0

尽管您可以在HTML文件的正文部分内联一个样式块,但您不应该这样做:如果您这样做,那么它不是有效的HTML,也不是如果将其链接。艾哈迈德下面描述的可能更多的是你要找的东西。 – 2010-06-07 06:04:13