Domanda

Ho questo campione ASP.NET MVC 2.0 vista in C #, legato a un modello fortemente tipizzato che ha un nome, cognome, 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>

ho convertito a VB.NET, vedendo i costrutti appropriati in VB.NET 10, come:

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

Nessuna fortuna. Questo è giusto, e se no, che cosa la sintassi ho bisogno di usare? Anche in questo caso, sto usando ASP.NET MVC 2.0, questa è una visione legata a un modello fortemente tipizzato ... non MVC 2 ancora non supporta i nuovi costrutti del linguaggio in .NET 2010?

E 'un progetto VB.NET e ho correttamente riferimento VB con questa intestazione:

"%>

Questa è la definizione della classe del modello; lo spazio dei nomi progetto predefinito è 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

Grazie.

È stato utile?

Soluzione

Ahh, muto da parte mia; i miei eredita utilizzati <>, che è C # solo; Avevo bisogno di:

System.Web.Mvc.ViewPage(Of MyModel)

E che fissa l'errore.

Altri suggerimenti

Hai cambiare la lingua nella direttiva Pagina:

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

Non sono un esperto di VB ma penso che questo

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

dovrebbe essere cambiato a questo

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

EDIT: aggiornamento An; scoperto che TextBoxFor cerca Expression (Of Func (Of Object, Object)) e di colata per fare questo funziona:

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

Ma ora ricevo un errore di runtime:

Descrizione: Si è verificato l'errore Un durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Si prega di rivedere i seguenti dettagli dell'errore specifico e modificare il codice sorgente in modo appropriato.

Messaggio di errore del compilatore: BC30205:. Fine della dichiarazione prevista

Errore Origine:

Linea 46: _ Linea 47: views_validation_index_aspx Public Class Linea 48: Inherits System.Web.Mvc.ViewPage Linea 49: Utensili System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler Linea 50:

File di origine: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 5a4e2626 \ dee8be7e \ App_Web_index.aspx.b3b8acce.cmmfnwms.0.vb Linea: 48

Non posso vincere con VB :-) qualche idea?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top