MVC 2: HTML.TextBoxFor и т. Д. В VB.NET 2010
-
04-10-2019 - |
Вопрос
У меня есть этот образец 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 :-) Любые идеи?