Вопрос

У меня есть этот образец Views asp.net mvc 2.0 в C #, связанный с сильно напечатанной моделью, имеющей имя, фамилию и электронную почту:

<div>
    First: <%= Html.TextBoxFor(i => i.FirstName) %>
    <%= Html.ValidationMessageFor(i => i.FirstName, "*") %>
</div>
<div>
    Last: <%= Html.TextBoxFor(i => i.LastName) %>
    <%= Html.ValidationMessageFor(i => i.LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(i => i.Email) %>
    <%= Html.ValidationMessageFor(i => i.Email, "*")%>
</div>

Я преобразовал его в vb.net, увидев соответствующие конструкции в vb.net 10, как:

<div>
    First: <%= Html.TextBoxFor(Function(i) i.FirstName) %>
    <%= Html.ValidationMessageFor(Function(i) i.FirstName, "*") %>
</div>
<div>
    Last: <%= Html.TextBoxFor(Function(i) i.LastName)%>
    <%= Html.ValidationMessageFor(Function(i) i.LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(Function(i) i.Email)%>
    <%= Html.ValidationMessageFor(Function(i) i.Email, "*")%>
</div>

Неудачно. Это правильно, а если нет, какой синтаксис мне нужно использовать? Опять же, я использую ASP.NET MVC 2.0, это представление, связанное с сильно напечатанной моделью ... MVC 2 еще не поддерживает новые языковые конструкции в .NET 2010?

Это проект VB.NET, и я правильно ссылаюсь на VB с этим заголовком:

" %>

Вот определение класса модели; пространство пространства проекта по умолчанию - mvcsample.vb:

Namespace Models.Validation
    Public Class ValidationSampleTestClass
        <Required(ErrorMessage:="First name required.")> _
        Public Property FirstName() As String
            Get
                Return m_FirstName
            End Get
            Set(ByVal value As String)
                m_FirstName = value
            End Set
        End Property
        Private m_FirstName As String
        .
        .
        .
    End Class
End Namespace

Спасибо.

Это было полезно?

Решение

Ааа, тупой на моей части; мои наследования используются <>, который является C # только; Мне было нужно:

System.Web.Mvc.ViewPage(Of MyModel)

И это исправило ошибку.

Другие советы

Вы изменили язык в директиве страниц:

<%@ Page 
    Language="VB" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>

Я не эксперт VB, но я думаю, что это

    <%@ Page 
Title="" 
Language="VB" 
MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %> 

следует изменить на это

    <%@ Page 
Title="" 
Language="VB" 
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Models.Validation.ValidationSampleTestClass>" %> 

Редактировать: обновление; Выяснил, что TextBox Forcels ищет выражение (функции FUNC (объекта, объекта)) и литья, чтобы сделать это:

<div>
    First: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).FirstName)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).FirstName, "*")%>
</div>
<div>
    Last: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).LastName)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).LastName, "*")%>
</div>
<div>
    Email: <%= Html.TextBoxFor(Function(i) DirectCast(i, ValidationSampleTestClass).Email)%>
    <%= Html.ValidationMessageFor(Function(i) DirectCast(i, ValidationSampleTestClass).Email, "*")%>
</div>

Но теперь я получаю ошибку выполнения:

Описание: Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Пожалуйста, просмотрите следующие конкретные данные об ошибке и изменяйте исходный код соответствующим образом.

Сообщение об ошибке компилятора: BC30205: конец оператора ожидается.

Исходная ошибка:

Линия 46: _ Line 47: View Class Views_validation_index_aspx Line 48: Наследование System.web.mvc.viewpage line 49: Инвентаризация System.Web.SessionState.irequiressessionState, System.Web.ihtttphandler Line 50:

Исходный файл: C: Windows Microsoft.net Framework v4.0.30319 Tramewary v4.0.30319 временные файлы asp.net root 5a4e2626 dee8be7e app_web_index.aspx.b3b8acce.cmmfnwms.0.vb Линия: 48

Я не могу выиграть с VB :-) Любые идеи?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top