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ützung

Es 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.

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top