More in this section
Forums / General Discussions / MVC in an external DLL - No definition for StyleSheet when using HtmlHelper

MVC in an external DLL - No definition for StyleSheet when using HtmlHelper

The forums are in read-only mode. In case that you want to directly contact the Progress Sitefinity team use the support center. In our Google Plus group you can find more than one thousand Sitefinity developers discussing different topics. For the Stack Overflow threads don’t forget to use the “Sitefinity” tag.
3 posts, 1 answered
  1. John
    John avatar
    0 posts
    Registered:
    28 Feb 2017
    05 Mar 2017
    Link to this post

    I have created a library assembly targeting .NET Framework 4.6.1.

     

    Within this assembly, I have the standard MVC sub-folder structure and a simple controller, a single model and view.  All works nicely... until I started to introduce a custom CSS.

     

    I have the following code within my cshtml file:

     

    @using Telerik.Sitefinity.Frontend;
    @using Telerik.Sitefinity.UI.MVC;

    <H1>Test</H1>

    @Html.StyleSheet(Url.EmbeddedResource("Mine.TestWidget.Resources.Reference", "Mine.TestWidget.Content.MyStyle.css", "bottom"))

     

    But that results in the following exception which I've extracted from the errors log:

     

     

    Type : System.Web.HttpCompileException, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    Message : c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\f6db3324\ce84c46e\App_Web_test.cshtml.692f5287.wodn0rpw.0.cs(606): error CS1061: 'System.Web.Mvc.HtmlHelper<dynamic>' does not contain a definition for 'StyleSheet' and no extension method 'StyleSheet' accepting a first argument of type 'System.Web.Mvc.HtmlHelper<dynamic>' could be found (are you missing a using directive or an assembly reference?)
    Source : System.Web
    Help link :
    Results : System.CodeDom.Compiler.CompilerResults
    SourceCode :
    WebEventCode : 0
    ErrorCode : -2147467259
    Data : System.Collections.ListDictionaryInternal
    TargetSite : System.CodeDom.Compiler.CompilerResults Compile()
    HResult : -2147467259
    Stack Trace :    at System.Web.Compilation.AssemblyBuilder.Compile()
       at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
       at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
       at System.Web.Compilation.BuildManager.GetCompiledType(VirtualPath virtualPath)
       at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
       at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
       at Telerik.Sitefinity.Mvc.ControllerWrapper.Execute()
       at Telerik.Sitefinity.Mvc.ControllerActionInvoker.ExecuteController(MvcProxyBase proxyControl)
       at Telerik.Sitefinity.Frontend.Mvc.Infrastructure.Routing.FeatherActionInvoker.ExecuteController(MvcProxyBase proxyControl)

     

    Any help is appreciated as I'm stuck and run out of ideas!

    Answered
  2. John
    John avatar
    0 posts
    Registered:
    28 Feb 2017
    06 Mar 2017
    Link to this post

    OK I have made progress and eliminated this error.  The following code overcomes the exception:

     

    @using Telerik.Sitefinity.Frontend.Mvc.Helpers;
    @using Telerik.Sitefinity.UI.MVC;

    <H1>Test</H1>

    <button onclick="test123()">Click me</button>

    @Html.StyleSheet(Url.EmbeddedResource("Mine.TestWidget.Resources.Reference", "Mine.TestWidget.Content.MyStyle.css"))

    @Html.Script(Url.EmbeddedResource(""Mine.TestWidget.Resources.Reference", "Mine.TestWidget.Scripts.MyStyle.js"))

     

    Notice the different @using reference and a change to the Stylesheet method.

    I've added my Javascript to this test and I notice isn't not getting rendered in my HTML output.  Anyone have tips on how to debug this?  The MyStyle.js script has the following code in it:

     

    $(document).ready(function () {
    displayAlert("Page ready");
    });
    function test123() {
    displayAlert("Testing...");
    };
    function displayAlert(message) {
    alert(message);
    };

     

    Nothing apprears on page load or when the button is clicked.

     

     

  3. John
    John avatar
    0 posts
    Registered:
    28 Feb 2017
    06 Mar 2017
    Link to this post
    This issue is sorted also.  The js file wasn't an embedded resource.  It was initially but I guess in an attempt to check all code and configuration combinations I set it incorrectly.
3 posts, 1 answered