53

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?

4 Answers 4

65

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.

Sign up to request clarification or add additional context in comments.

1 Comment

@blachawk if (false) means it will never be executed, the code is there purely as a hint to VS.
3

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 

Comments

0

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).

1 Comment

Should the Style link be pointing to msdn.microsoft.com/en-us/library/… ?
-4

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.

5 Comments

This means that you would have to have CSS duplicated in each ascx file, which is bad in many ways.
No you can use this usercontrol in MasterFile.Then there is no need to write this in each file
You can also attach stylesheet in usercontrol as given below. <head> <title></title> <link rel="Stylesheet" type="text/css" href="Stylesheet.css" id="style" runat="server" /></head>
Yes, you can put a reference to to the UserControl in the MasterPage, but the question is asking about how to make the UserControl recognize that a CSS rule exists in a separate .css file.
You can also attach stylesheet in usercontrol as given below. <head> <title></title> <link rel="Stylesheet" type="text/css" href="Stylesheet.css" id="style" runat="server" /></head>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.