2017-06-07 4 views
0

Ich mache eine aspx Web Services in vb.net. Ich erhalte ein Objekt Array-Parameter den Rahmen Sorge um Guss Validierungen zu lassen, wie SieWeb Services aspx Eigenschaft der Klasse behält nicht den Standardwert

<ScriptMethod(ResponseFormat:=ResponseFormat.Json, XmlSerializeString:=False)> _ 
     <WebMethod(True)> _ 
    Public Function insertarUnidad(ByVal unidades() As unidad) As String 

und ich habe eine öffentliche Klasse

definiert
Public Class unidad 

Public Property id_unidad As String 
Public Property nombre As String ="I'm Not Empty" 
Public Property placas As String = "N" 
END Class 

es stellt mich heraus, dass, wenn ich das Debuggen sehen können, das Objekt Arrays haben nicht die Standardwerte einiger Eigenschaften wie placas, stattdessen haben sie den Wert "0". Dies ist der Standardwert für den Datentyp String. aber irgendwie in der Eigenschaft nombre hat es den Standardwert "Ich bin nicht leer".

Wie kann ich den Standardwert verwenden, den ich in die Eigenschaften einfüge, ohne sie zu verlieren?

Danke, sorry für mein schlechtes Englisch.

UPDATE

Die aspx war auf .net4.5 und von Web-App es war perfekt funktioniert, aber in einer Konsole App funktioniert nicht, da die Konsole App auf net4.0 war es fest Ändern des Framework-Ziels von 4.5 auf 4.0, Auch wenn die Konsolen-App im 4.5 Framework ist, funktioniert das Aspx perfekt.

Antwort

1

Selbst eine leere Zeichenfolge überschreibt diese Werte. Aber das ist ein guter Anwendungsfall von Get und Set für die Eigenschaften!

Public Class unidad 
    Private _nombre as string 
    Private _placas as string 
    Public Property id_unidad As String Public Property placas 
     Get 
      Return _placas 
     End Get 
     Set(ByVal value As String) 
      If value = "0" then 
       _placas = "N" 
      else 
       _placas = value 
      end if 
     End Set 
    End Property 
    Public Property nombre 
      Get 
       Return _nombre 
      End Get 
      Set(ByVal value As String) 
       If value = "0" then 
        _nombre = "I'm Not Empty" 
       else 
        _nombre = value 
       end if 
      End Set 
    End Property 
End Class 
'Your if statements may need changed 
+2

Mit get/set für die Eigenschaften funktioniert es nicht wie erwartet, manchmal hat das Attribut den Standardwert der Eigenschaft, manchmal bekomme ich nichts statt "0", wie könnte ich wissen, wann ich bin werde nichts oder "0" in String, int, chat, dezimal usw. empfangen. danke für deine zeit. –

+0

Sagst du manchmal, die Methode erhält nicht einmal die zusätzlichen Werte? Sie müssten dann eine neue, überladene Version davon erstellen. [check this out] (https://stackoverflow.com/questions/3921142/net-overload-webmethods-possible) –

+0

Nein, wenn ich ein Array erhalte, wird das Framework versuchen, das Array auf ** unidad ** type zu transformieren Das bedeutet, dass einige Eigenschaften der Klasse mit dem Wert der Attribute des Arrays überschrieben werden, aber manchmal werde ich nicht alle Klasseneigenschaften in den Attributen des Arrays erhalten, deshalb setze ich einen Standardwert in den Klasseneigenschaften wie ** nombre ** mit "Ich bin nicht leer". Innerhalb der Funktion habe ich ein Objekt-Array vom Typ ** unidad ** mit den empfangenen Werten und den Standardwerten für den Fall, dass einige Werte nicht empfangen wurden –