Solved

Font Awesome and MVC 5

Posted on 2014-12-09
11
875 Views
Last Modified: 2014-12-09
Hi All,

I'm trying to install the font awesome package to an mvc project.

I've ran the following
Install-Package Mvc.RazorTools.FontAwesome

which has installed fine and i now have the .css added to content and the app_start -> razor tools -> fontawesome.cs added

I have added the following to the top of my layout;

@Styles.Render("~/Content/fontawesome")

and then tried the following inside the page

@Html.FontAwesome(FontAwesomeIconSet.Star)

however this throws an error when i try to run this?

can anyone tell me what i am doing wrong here?

I have also tried <i class="fa fa-facebook-square"></i> as an example too and this doesnt appear either.
0
Comment
Question by:flynny
  • 6
  • 5
11 Comments
 

Author Comment

by:flynny
ID: 40488823
Error I get when trying to use the html helper is

CS1061: 'System.Web.Mvc.HtmlHelper<dynamic>' does not contain a definition for 'FontAwesome' and no extension method 'FontAwesome' accepting a first argument of type 'System.Web.Mvc.HtmlHelper<dynamic>' could be found (are you missing a using directive or an assembly reference?)
0
 

Author Comment

by:flynny
ID: 40488841
Ok I have progressed

I added to the view web.config and now have

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="WebApplication1" />
        <add namespace="WebApplication1.Helpers" />
        <add namespace="Mvc.RazorTools.FontAwesome"/>
      </namespaces>
    </pages>
  </system.web.webPages.razor>

Open in new window


and i get the following error;

Assembly 'Mvc.RazorTools.FontAwesome, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

now do i have to update the MVC version i am using and if so is it possible to do ove nuget?
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 40488872
You most likely just need a using at the top of your Razor.

e.g.

@using Mvc.RazorTools.FontAwesome

Open in new window

0
 

Author Comment

by:flynny
ID: 40488877
HI Kauf,

thanks for the reply.

I added

<add namespace="Mvc.RazorTools.FontAwesome"/>

to my web.config in the views folder which now gives the above error? Can i Upgrade 5.0.0.0 to 5.2.2.0?

If so is it possible through nuget?
0
 

Author Comment

by:flynny
ID: 40488919
Ok,

Sorry for being a wally (i.m new to MVC).

I've upgraded the MVC library and now it is running

@Html.FontAwesome(FontAwesomeIconSet.Star)

and rendering as a <i> but the icons ar enot appearing?

I've checked under firebug and i'm getting a 404 on the.css file. Now the font-awesome.css is held under ~/Content/font-awesome.css (and .min.css is there too).

In the font-awesome.cs file it has Mvc.RazorTools.BundleManager.Styles.Include("~/Content/font-awesome.css"); (this is running too as I tested a break point on it.

I reference in the view as follows;

@Styles.Render("~/Content/fontawesome")

an ideas?
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 40488920
Yes, and yes.
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 40488924
and rendering as a <i> but the icons ar enot appearing?
Is is just <i>, or does the <i> include a class attribute? If so, is the class attribute's value correct? You may want to view the source of your page and ensure that you see that bundle being spit out.
0
 

Author Comment

by:flynny
ID: 40488951
sorry yes the class element is being applied e.g.

@Html.FontAwesome(FontAwesomeIconSet.Star)[/code[]

is rendered as

[code]<i class="fa fa-star"></i>

Open in new window


sorry about that.

however when i look at the source and in the head

<link href="/Content/fontawesome" rel="stylesheet">

is added but if i look under the network i get a 404 on /content/fontawesome?

Now (forgive me as im new to mvc) I have not added any reference under bundleconfig.cs for font-awesome. But under the App_Start -> Razor Tools -> font-awesome.cs file it has  

Mvc.RazorTools.BundleManager.Styles.Include("~/Content/font-awesome.css");

Open in new window


which i assume add to the bundle, i assume i am referencing it wrongly in the layout?
0
 
LVL 74

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 40489039
OK, I played around with this a bit, and the issue is how Razor Tools manages its bundles. You need to change your @Styles.Render("~/Content/fontawesome") to:

@Styles.Render("~/Styles/razortools")

Open in new window

0
 

Author Comment

by:flynny
ID: 40489050
Perfect.

How did you work this out please kaufmed? is there any way I can customise this virtual path?
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 40489093
I set a breakpoint in FontAwesome.cs. Then I looked inside the Styles property:

Screenshot
The Path property is documented as "Gets ...", which would imply read-only (by Micrsoft's convention); however, the property is writeable, so you can overwrite it:

Mvc.RazorTools.BundleManager.Styles.Path = "~/Content/fontawesome";

Open in new window


You may do so at your own risk, though. If the maintainers decide to change this, then your code will break. It may be worth asking a question on the project website to ensure that they don't plan on changing it. (But if you never upgrade that package, then you won't have to worry about it. This is sketchy, though.)
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now