How to make user controls know about css classes in ASP.NET

asp.netCssVisual Studio-2008User Controls

asp.net Problem Overview


Since there are no header sections for user controls in asp.net, user controls have no way of knowing about stylesheet files. So css classes in the user controls are not recognized by visual studio and produces warnings. How can I make a user control know that it will relate to a css class, so if it is warning me about a non-existing css class, it means that the class really do not exist?

Edit: Or should I go for a different design like exposing css classes as properties like "HeaderStyle-CssClass" of GridView?

asp.net Solutions


Solution 1 - asp.net

Here's what I did:

<link rel="Stylesheet" type="text/css" href="Stylesheet.css" id="style" runat="server" visible="false" />

It fools Visual Studio into thinking you've added a stylesheet to the page but it doesn't get rendered.


Here's an even more concise way to do this with multiple references;

<% if (false) { %>
    <link rel="Stylesheet" type="text/css" href="Stylesheet.css" />
    <script type="text/javascript" src="js/jquery-1.2.6.js" />
<% } %>

As seen in this blog post from Phil Haack.

Solution 2 - asp.net

Add the style on your usercontrol and import css in it.

 <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="WCReportCalendar.ascx.vb"
Inherits="Intra.WCReportCalender" %>
 <style type='text/css'>    
      @import url("path of file.css");
       // This is how i used jqueryui css
      @import url("http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css");               

 </style>

 your html 

Solution 3 - asp.net

If you are creating composite UserControl, then you can set the CSSClass property on the child controls..

If not, then you need to expose properties that are either of the Style type, or (as I often do) string properties that apply CSS at the render type (i.e. take them properties and add a style attribute to the HTML tags when rendering).

Solution 4 - asp.net

You Can use CSS direct in userControl.

Use this in UserControl:

 <head>
    <title></title> 
    <style type="text/css">
      .wrapper {
          margin: 0 auto -142px; 
         /* the bottom margin is the negative value of the footer's height */ 
       }
    </style>
 </head>

This will work.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSerhat OzgelView Question on Stackoverflow
Solution 1 - asp.netAdam LassekView Answer on Stackoverflow
Solution 2 - asp.netAbdul SaboorView Answer on Stackoverflow
Solution 3 - asp.netRob CooperView Answer on Stackoverflow
Solution 4 - asp.netKirtish SrivastavaView Answer on Stackoverflow