У меня есть код, который работает в приложении .NET 3.5, который не работает, когда я настраиваю его таким же образом в .NET 4.0.Проблема возникает, когда я пытаюсь расширить HtmlHelper.В .NET 4.0 MVC3, если у меня есть страница, которая выглядит следующим образом:
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of MvcApplication2.MyModel))" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%=Html.MyTest%>
</asp:Content>
и расширение, подобное этому:
Imports System.Runtime.CompilerServices
Module Extensions
<Extension()>
Public Function MyTest(htmlhelper As System.Web.Mvc.HtmlHelper) As String
Return Now.ToLongTimeString
End Function
End Module
, оно не будет компилироваться, потому что «HTML»не относится к типу System.Web.Mvc.HtmlHelper
, как это было в прошлом, теперь оно относится к типу System.Web.Mvc.HtmlHelper(Of IEnumerable (Of MvcApplication2.MyModel))
.Сообщение об ошибке на <%=Html.MyTest%>
:
'MyTest' is not a member of 'System.Web.Mvc.HtmlHelper(Of System.Collections.Generic.IEnumerable(Of MvcApplication2.MyModel))'.
Как бы я расширил HtmlHelper в этой конфигурации?Я что-то упустил в моей настройке, что приводит к тому, что «HTML» имеет другой тип, чем это было в прошлом?Я ничего не нашел в Интернете об изменении в поведении, что заставляет меня поверить, что я где-то сделал что-то не так.
ОБНОВЛЕНИЕ:
В отношенииПочему HtmlHelper (из TModel) наследуется от HtmlHelper, почему этот код не работает?
Partial Public Class HtmlHelper
Public Function MyOtherTest() As String
Return Now.ToLongTimeString
End Function
End Class
Ссылка <%=Html.MyOtherTest%>
выдает то же сообщение об ошибке.