My extensions are not imported in my vbhtml view. I seem to be missing something somewhere.. Can anybody help please?
The module.vb:
Imports System.Runtime.CompilerServices
Namespace Areas.Admin.Models.Extensions
<Extension()> _
Public Module InputExtensions
Public Function SelectHumanGroup(ByVal helper As HtmlHelper, ByVal name As String, Optional ByVal selectedValue As String = "", Optional ByVal htmlAttributes As Object = Nothing) As MvcHtmlString
Return helper.DropDownList(name, repo.GetGroups(), htmlAttributes)
End Function
End Module
End Namespace
The view.vbhtml:
@Imports MySite.Areas.Admin.Models.Extensions
@ModelType MySite.Models.MyViewModel
@Code
ViewData("Title") = "Index"
End Code
<h2>Index</h2>
@Html.SelectHumanGroup("test")
I'm a C# guy, but this should be valid for VB as well.
It is better though that you add your extensions via Web.config instead. That way you don't have to add them in every view.
Under your Views folder you find a Web.Config. Search for and add:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.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.Routing" />
<add namespace="MySite.Areas.Admin.Models.Extensions" />
</namespaces>
</pages>
</system.web.webPages.razor>
I think you need to decorate the Function and not the Model. I have something similar and it's working for me, check this out:
Imports System.Runtime.CompilerServices
Namespace Areas.Admin.Models.Extensions
Public Module InputExtensions
<Extension()> _
Public Function SelectHumanGroup(ByVal helper As HtmlHelper, ByVal name As String, Optional ByVal selectedValue As String = "", Optional ByVal htmlAttributes As Object = Nothing) As MvcHtmlString
Return helper.DropDownList(name, repo.GetGroups(), htmlAttributes)
End Function
End Module
End Namespace
Your module.vb NEED to be in App_Code directory and namespaces should be declared as it was answered above.