MVC 2: Html.TextBoxFor etc. in VB.NET 2010
-
04-10-2019 - |
Frage
Ich habe dieses Beispiel ASP.NET MVC 2.0 Ansicht in C #, gebunden an ein stark typisierte Modell, das einen Vornamen, Nachnamen hat und E-Mail:
<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>
ich konvertiert es zu VB.NET, die entsprechenden Konstrukte in VB.NET 10 zu sehen, wie:
<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>
Glück Nein. Ist das richtig, und wenn nicht, was zu tun Syntax ich verwenden? Noch einmal, ich bin mit 2.0 ASP.NET MVC, ist dies ein Blick auf ein stark typisierte Modell gebunden ... nicht MVC 2 noch nicht die neuen Sprachkonstrukte in .NET 2010?
UnterstützungEs ist ein VB.NET-Projekt und ich VB richtig mit diesem Header Referenz:
"%>Hier ist die Definition der Modellklasse; das Standard-Projektnamespace ist 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
Danke.
Lösung
Ahh, auf meinem Teil stumm; mein inherits verwendet <>, die C # ist nur; Ich brauchte:
System.Web.Mvc.ViewPage(Of MyModel)
Und das den Fehler behoben.
Andere Tipps
Haben Sie die Sprache, in der Richtlinie Seite ändern:
<%@ Page
Language="VB"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>
Ich bin kein VB-Experte, aber ich denke, das
<%@ Page
Title=""
Language="VB"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
sollte auf diese
geändert werden <%@ Page
Title=""
Language="VB"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Models.Validation.ValidationSampleTestClass>" %>
EDIT: Ein Update; fand heraus, dass TextBoxFor Looks für Expression (Of Func (Of Object, Object)) und durch Gießen, dies zu tun funktioniert es:
<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>
Aber ich bekomme jetzt einen Laufzeitfehler:
Beschreibung: Fehler bei der Erstellung einer Ressource aufgetreten erforderlich, um diese Anforderung zu bedienen. Bitte lesen Sie die folgenden spezifischen Fehlerdetails und den Quellcode ändern entsprechend.
Compiler-Fehlermeldung: BC30205:. Ende Aussage erwartet
Quellfehler:
Zeile 46: _ Linie 47: Public Class views_validation_index_aspx Zeile 48: Erbt System.Web.Mvc.ViewPage Linie 49: Implementiert System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler Zeile 50:
Quelldatei: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 5a4e2626 \ dee8be7e \ App_Web_index.aspx.b3b8acce.cmmfnwms.0.vb Zeile: 48
Ich kann nicht mit VB :-) Ideen gewinnen?