如何在客户端和服务器端对作为存储过程的服务进行验证(返回复杂类型)

时间:2010-09-18 18:46:16

标签: silverlight silverlight-3.0 silverlight-4.0

我在做Silverlight 4

在我的数据库中,我有一个存储过程(有两个参数),它返回行(带有额外的字段)。所以我必须为我的模型上的那些行创建一个复杂的类型。并提供服务来调用该函数导入存储过程。

RIA将自动为我创建匹配的实体(对于复杂类型)和操作。

但是,我不知道如何验证客户端和服务器端的操作参数。例如,参数必须仅为整数(且大于10)或仅为日期时间。

下面的

是我的xaml代码。我正在使用DomainDataSource控件而不知道如何验证两个字段参数。它有两个TextBox让用户输入参数值。 Plz帮助我,谢谢

 <riaControls:DomainDataSource AutoLoad="False" d:DesignData="{d:DesignInstance my1:USPFinancialAccountHistory, CreateList=true}" Height="0" LoadedData="uSPFinancialAccountHistoryDomainDataSource_LoadedData" Name="uSPFinancialAccountHistoryDomainDataSource" QueryName="GetFinancialAccountHistoryQuery" Width="0" Margin="0,0,705,32">
        <riaControls:DomainDataSource.DomainContext>
            <my:USPFinancialAccountHistoryContext />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="fiscalYear" Value="{Binding ElementName=fiscalYearTextBox, Path=Text}" />
            <riaControls:Parameter ParameterName="fiscalPeriod" Value="{Binding ElementName=fiscalPeriodTextBox, Path=Text}" />
        </riaControls:DomainDataSource.QueryParameters>
    </riaControls:DomainDataSource>
    <StackPanel Height="30" HorizontalAlignment="Left" Orientation="Horizontal" VerticalAlignment="Top">
        <sdk:Label Content="Fiscal Year:" Margin="3" VerticalAlignment="Center" />
        <TextBox Name="fiscalYearTextBox" Width="60" />
        <sdk:Label Content="Fiscal Period:" Margin="3" VerticalAlignment="Center" />
        <TextBox Name="fiscalPeriodTextBox" Width="60" />
        <Button Command="{Binding Path=LoadCommand, ElementName=uSPFinancialAccountHistoryDomainDataSource}" Content="Load" Margin="3" Name="uSPFinancialAccountHistoryDomainDataSourceLoadButton" />
    </StackPanel>
    <telerik:RadGridView ItemsSource="{Binding ElementName=uSPFinancialAccountHistoryDomainDataSource, Path=Data}" Name="uSPFinancialAccountHistoryRadGridView" Grid.Row="1" 
                         IsReadOnly="True"
                         DataLoadMode="Asynchronous"
                         AutoGenerateColumns="False"
                         ShowGroupPanel="False">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn Header="Account Number" DataMemberBinding="{Binding AccountNumber}"/>
            <telerik:GridViewDataColumn Header="Department Number" DataMemberBinding="{Binding DepartmentNumber}"/>
            <telerik:GridViewDataColumn Header="Period code" DataMemberBinding="{Binding PeriodCode}" />
            <telerik:GridViewDataColumn Header="Total Debit" DataMemberBinding="{Binding TotalDebit}" DataFormatString="{}{0:C2}"/>
            <telerik:GridViewDataColumn Header="Total Credit" DataMemberBinding="{Binding TotalCredit}" DataFormatString="{}{0:C2}"/>
            <telerik:GridViewDataColumn Header="Period Total" DataMemberBinding="{Binding PeriodTotal}" DataFormatString="{}{0:C2}"/>
            <telerik:GridViewDataColumn Header="Year To Date" DataMemberBinding="{Binding YearToDate}" DataFormatString="{}{0:C2}"/>
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>

1 个答案:

答案 0 :(得分:0)

如果您遵循建议的做法,RIA服务将自动将它们考虑在客户端和服务器上(即代码将在具有相同属性的客户端上生成,并且它们将得到尊重)。有关如何处理验证,请参阅该人本人this article