0

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

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

我得到一个异常'传递到字典中的模型项是类型'System.Collections.Generic.List1[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)

或者我应该在视图中创建一个新的助手以通过?

4

1 回答 1

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

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

于 2012-12-07T17:10:00.480 回答