Question

J'ai cet exemple ASP.NET MVC 2.0 vue en C #, lié à un modèle fortement typé qui a un prénom, nom et adresse électronique:

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

Je me suis converti à VB.NET, voir les constructions appropriées VB.NET 10, comme:

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

Non chance. Est-ce droit, et sinon, quelle syntaxe dois-je utiliser? Encore une fois, j'utilise ASP.NET MVC 2.0, version liée à un modèle fortement typé ... ne MVC 2 toujours pas en charge les nouvelles constructions de langage .NET 2010?

Il est un projet VB.NET et je référence correctement VB avec cet en-tête:

"%>

Voici la définition de la classe modèle; l'espace de noms par défaut du projet est 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

Merci.

Était-ce utile?

La solution

Ahh, muet de ma part; mes inherits utilisés <>, qui est C # seulement; Je avais besoin:

System.Web.Mvc.ViewPage(Of MyModel)

Et corrigé l'erreur.

Autres conseils

Avez-vous modifié la langue dans la directive Page:

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

Je ne suis pas un expert en VB mais je pense que cela

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

devrait être changé à cette

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

EDIT: Une mise à jour; ont découvert que TextBoxFor regards pour Expression (Of Func (Of Object, Object)) et par coulée pour ce faire, il fonctionne:

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

Mais maintenant, je reçois une erreur d'exécution:

Description: Une erreur est survenue lors de la compilation d'une ressource nécessaire pour cette demande. S'il vous plaît consulter les détails d'erreur spécifique et modifier votre code source appropriée.

Compiler Message d'erreur: BC30205:. Fin de la déclaration attendue

Erreur source:

Ligne 46: _ Ligne 47: Classe publique views_validation_index_aspx Ligne 48: Hérite System.Web.Mvc.ViewPage Ligne 49: Met en œuvre System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler Ligne 50:

Fichier source: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files de racine \ 5a4e2626 \ dee8be7e \ App_Web_index.aspx.b3b8acce.cmmfnwms.0.vb ligne: 48

Je ne peux pas gagner avec VB :-) idées?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top