【问题标题】:.NET MVC3 Razor (VB!) Extensions not imported in view?.NET MVC3 Razor (VB!) 扩展未在视图中导入?
【发布时间】:2011-06-14 22:15:00
【问题描述】:

我的扩展没有导入到我的 vbhtml 视图中。我似乎在某处遗漏了一些东西..有人可以帮忙吗?

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

view.vbhtml:

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

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

<h2>Index</h2>


@Html.SelectHumanGroup("test")

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    我认为你需要装饰函数而不是模型。我有类似的东西,它对我有用,看看这个:

    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
    

    【讨论】:

      【解决方案2】:

      您的 module.vb 需要位于 App_Code 目录中,并且应按照上面的回答声明命名空间。

      【讨论】:

        【解决方案3】:

        我是 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>
        

        【讨论】:

        • 这不起作用。抛出相同的错误:“SelectUserGroup”不是“System.Web.Mvc.HtmlHelper”的成员。
        • 抱歉,错误是:“SelectUserGroup”不是“System.Web.Mvc.HtmlHelper(Of MySite.Models.MyViewModel)”的成员。 MyViewModel 被传递给视图,并且在视图中也被引用(我更新了问题..)
        • @Ropstah,您声明了 SelectHumanGroup,但您正在调用 SelectUserGroup。会不会是这个问题?
        • 看看这里:stackoverflow.com/questions/1013546/… 对不起,我无法提供进一步的帮助,我并没有真正做任何 VB。根据我所做的小研究,我无法判断问题所在。
        猜你喜欢
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        相关资源
        最近更新 更多