MVC 2: Html.TextBoxFor, ecc in VB.NET 2010
-
04-10-2019 - |
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.
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 ??p>
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?