具有泛型类型的新HTMLHelper

时间:2012-12-07 07:35:42

标签: asp.net-mvc vb.net entity-framework razor

所以我尝试搜索,但我不确定要搜索什么。我正在尝试创建一个HtmlHelper扩展,它采用MyModel类型的模型。但是,View采用模型类型List(Of MyModel)。在我的扩展中,最初创建的只是MyModel,当View Model是List(MyModel)并且我使用

For Each Item in Model
    Html.MyHelper(Item)
Next

我得到一个异常'传递给字典的模型项的类型为'System.Collections.Generic.List 1 [MyModel]',但是这个字典需要一个'MyModel'类型的模型项。'

我原来的助手是

Public Function FormatTable(Of T As Class)(helper As HtmlHelper, model As T) as OutModel(Of T)

我想要像

这样的东西
Public Function FormatTable(Of List(of T As Class))(helper As HtmlHelper, model As T, 
       tableType As RenderType, Optional columns As Integer = 2) As FormatTable(Of T)

或者我应该在视图中创建一个新的帮助器来传递?

1 个答案:

答案 0 :(得分:1)

虽然我不确定怎么做Function MyExtension(of List(Of T as Class))(model as T)或者如果可能的话,我确实解决了我的情况。我需要创建一个不同类类型的HtmlHelper并使用不同的模型并找到MvcUtil就可以了。

我发现了这篇文章:Stronglytyped html helper with different model for get and post

在我看来,我创建了一个新模型类型的新htmlhelper来调用我的htmlextension

For Each Item in Model
    @Html.HtmlHelperFor(Of MyType)().MyExtension(Item)
Next

现在有一张支票

If(IsNothing(helper.ViewData.Model)) Then
    helper = helper.HtmlHelperFor(Of T)(model)
End If

这在我的视图中循环浏览列表时解决了我的问题。