2010-05-09 3 views
1

J'ai cet exemple de vue ASP.NET MVC 2.0 en C#, lié à un modèle fortement typé qui a un prénom, un nom et un email:MVC 2: Html.TextBoxFor, etc. dans VB.NET 2010

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

Pas de chance. Est-ce exact, et sinon, quelle syntaxe dois-je utiliser? Encore une fois, j'utilise ASP.NET MVC 2.0, ceci est une vue liée à un modèle fortement typé ... est-ce que MVC 2 ne supporte pas encore les nouvelles constructions de langage dans .NET 2010?

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

+2

Qu'est-ce qui ne fonctionne pas? Pas de chance n'est pas très descriptif du problème réel que vous rencontrez. – Kelsey

+0

Je reçois des messages d'erreur; quand je ne spécifie pas le type As, il me donne une erreur qu'il ne peut pas trouver la propriété; quand je supprime le type As, il dit qu'il attend l'objet ... J'ai un @Imports défini pour référencer l'espace de noms de l'objet, donc l'objet devrait être accessible dans la vue ... Je reçois les squigglies en disant une erreur, et quand je cours, il dit que la classe compilée dynamique a une erreur avec l'instruction inherits (manquant le _ ou quelque chose, je ne comprends pas) ... Avez-vous Html.TextBoxFor et ValidationMessageFor pour fonctionner dans VB? Est-ce que vous l'obtenez pour travailler dans VB? –

Répondre

2

Ahh, muet de ma part; mes héritiers ont utilisé <>, qui est C# seulement; J'avais besoin:

System.Web.Mvc.ViewPage(Of MyModel) 

Et cela a corrigé l'erreur.

1

Avez-vous changé la langue dans la page directive.

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

Oui, je l'ai fait. Je l'ai mis en place comme un projet VB, et j'ai le langage VB. Avez-vous Html.TextBoxFor et le ValidationMessageFor pour travailler dans VB? Voyez-vous quelque chose qui ne va pas avec la définition? –

0

EDIT: une mise à jour; a découvert que TextBoxFor cherche expression (de 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 requise pour traiter cette demande. Veuillez vérifier les détails d'erreur spécifiques suivants et modifier votre code source de manière appropriée.

Message d'erreur du compilateur: BC30205: Fin de l'instruction attendue.

Source Erreur:

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:

Source fichier: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ 5a4e2626 \ dee8be7e \ App_Web_index.aspx.b3b8acce.cmmfnwms.0. vb Ligne: 48

I c annot gagne avec VB :-) des idées?

1

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

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

doit être changé à ce

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