2017-06-07 43 views
0

我在vb.net中製作一個aspx web服務。我收到一個對象數組參數讓有關投驗證框架擔心,因爲你可以看到Web Services aspx類的屬性不保留默認值

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

,我有一個公共類定義

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 

事實證明,當我調試,對象數組沒有placas等屬性的默認值,而是它們有「0」值,這是String數據類型的默認值。但不知何故,在財產nombre它確實有默認值「我不是空的」。

我該如何使用我在屬性中放置的默認值而不會丟失它?

謝謝,抱歉我的英文不好。

UPDATE

的ASPX是在.net4.5,並從Web應用程序,它正在完美,但在一個控制檯應用程序是行不通的,因爲控制檯應用程序是在NET4.0 得到它固定將框架目標從4.5更改爲4.0, 即使控制檯應用程序處於4.5框架中,aspx也能正常工作。

回答

1

即使是空字符串也會覆蓋這些值。但是,這是屬性的Get和Set的一個很好的用例!

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

對屬性使用get/set它不像預期的那樣工作,有時該屬性具有屬性的默認值,有時候我沒有收到任何東西而不是「0」,我怎麼知道我什麼時候會收到沒有或「0」在字符串,int,聊天,小數等。 謝謝你的時間。 –

+0

你是說有時候這個方法甚至沒有獲得額外的值?然後您需要創建一個新的重載版本。 [檢查出來](https://stackoverflow.com/questions/3921142/net-overload-webmethods-possible) –

+0

不,當我收到一個數組時,框架會嘗試將數組轉換爲** unidad **類型這意味着類的某些屬性將被數組屬性的值覆蓋,但是,有時我不會接收數組屬性中的所有類屬性,這就是爲什麼我在類屬性中設置默認值,如** nombre **與「我不是空的」。在函數內部,我有一個** unidad **類型的對象數組,其中包含接收到的值以及默認值,以防某些值未收到的情況 –