我的扩展程序未在我的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")
答案 0 :(得分:4)
我是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 :(得分: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 :(得分:0)
您的module.vb需要位于 App_Code 目录中,并且应该按照上面的回答声明名称空间。