.NET MVC3 Razor (VB!) Расширения не импортированы в поле зрения? - PullRequest
2 голосов
/ 25 января 2011

Мои расширения не импортируются в моем представлении vbhtml. Кажется, что-то где-то отсутствует .. Кто-нибудь может помочь, пожалуйста?

Модуль.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

view.vbhtml:

@Imports MySite.Areas.Admin.Models.Extensions
@ModelType MySite.Models.MyViewModel

@Code
    ViewData("Title") = "Index"
End Code

<h2>Index</h2>


@Html.SelectHumanGroup("test")

Ответы [ 3 ]

4 голосов
/ 25 января 2011

Я парень на C #, но это должно быть также и для VB.Однако лучше, если вы добавите свои расширения через Web.config.Таким образом, вам не нужно добавлять их в каждом представлении.Под вашей папкой Views вы найдете Web.Config.Найдите и добавьте:

<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>
1 голос
/ 14 июня 2011

Я думаю, вам нужно украсить функцию, а не модель.У меня есть что-то подобное, и это работает для меня, проверьте это:

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
0 голосов
/ 20 февраля 2011

Ваш module.vb ДОЛЖЕН быть в каталоге App_Code , а пространства имен должны быть объявлены так, как было дано ответ выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...