Michel's profileEspaço de MichelBlogListsNetwork Tools Help

Espaço de Michel

Michel Legendre Del Gallo

Occupation
Location
Michel Legendre Del Gallo é consultor em desenvolvimento de software na plataforma .NET certificado pela Microsoft (MCP / MCAD)e especialista em aplicações Web, aplicações distribuídas utilizando Web Service e COM+ e RIA usando Flash e interagindo com .NET.
February 12

Validação de formulário separadas por grupo - ValidationGroup Property

Neste exemplo, vou mostrar uma maneira de como criar validações separadas por grupo no mesmo formulário utilizando ASP.NET 2.0. Para cada controle de validação existe a propriedade ValidationGroup, que nos permite separar as validações no mesmo formulários utilizando botões diferentes para disparar a validação.

ValidationGroup 

Seguem abaixo os controles utilizados e valores de cada propriedade:

txtCampoIndependente

  • ID - txtCampoIndependente
     
    rfvCampoIndependente
  • ID - rfvCampoIndependente
  • ControlToValidate - txtCampoIndependente
  • ErrorMessage - Campo independente é necessário 
  • Text - *

    txtArea1
  • ID - txtArea1

    rfvArea1 
  • ID - rfvArea1
  • ControlToValidate - txtArea1
  • ErrorMessage - Campo da área 1 é necessário
  • Text - *
  • ValidationGroup - area1

    btnValidarArea1 
  • ID - btnValidarArea1
  • Text - Validar Área 1
  • ValidationGroup - area1
     
    txtArea2 
  • ID - txtArea2

    rfvArea2 
  • ID - rfvArea2
  • ControlToValidate - txtArea2
  • ErrorMessage - Campo da área 2 é necessário
  • Text - *
  • ValidationGroup - area2

    btnValidarArea2 
  • ID - btnValidarArea2
  • Text - Validar Área 2
  • ValidationGroup - area2

    btnValidade
  • ID - btnValidade
  • Text - OK

    vsIndependente 
  • ID - vsIndependente

    vsArea1
  • ID - vsArea1
  • ValidationGroup - area1

    vsArea2
  • ID - vsArea2
  • ValidationGroup - area2


    Código Fonte HTML já com os controles e propriedades:
    <table width="400">
                <tr>
                    <td align="right" bgcolor="#f7f7f7" class="form">
                        Campo Independente:</td>
                    <td bgcolor="#f7f7f7">
                        <asp:TextBox ID="txtCampoIndependente" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvCampoIndependente" runat="server" ControlToValidate="txtCampoIndependente"
                            ErrorMessage="Campo independente é necessário">*</asp:RequiredFieldValidator></td>
                </tr>
                <tr>
                    <td bgcolor="#f7f7f7">
                        &nbsp;</td>
                    <td bgcolor="#f7f7f7">
                    </td>
                </tr>
                <tr>
                    <td align="center" bgcolor="#f7f7f7" class="form">
                        ÁREA 1</td>
                    <td align="center" bgcolor="#f7f7f7" class="form">
                        ÁREA 2</td>
                </tr>
                <tr>
                    <td align="center" bgcolor="#f7f7f7">
                        <asp:TextBox ID="txtArea1" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvArea1" runat="server" ControlToValidate="txtArea1"
                            ErrorMessage="Campo da área 1 é necessário" ValidationGroup="area1">*</asp:RequiredFieldValidator></td>
                    <td align="center" bgcolor="#f7f7f7">
                        <asp:TextBox ID="txtArea2" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvArea2" runat="server" ControlToValidate="txtArea2"
                            ErrorMessage="Campo da área 2 é necessário" ValidationGroup="area2">*</asp:RequiredFieldValidator></td>
                </tr>
                <tr>
                    <td align="center" bgcolor="#f7f7f7">
                        <asp:Button ID="btnValidarArea1" runat="server" Text="Validar Área 1" ValidationGroup="area1" /></td>
                    <td align="center" bgcolor="#f7f7f7">
                        <asp:Button ID="btnValidarArea2" runat="server" Text="Validar Área 2" ValidationGroup="area2" /></td>
                </tr>
                <tr>
                    <td>
                        &nbsp;</td>
                    <td>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2" bgcolor="#f7f7f7">
                        <asp:Button ID="btnValidade" runat="server" Text="OK" />
                        <br />
                        <asp:ValidationSummary ID="vsIndependente" runat="server" CssClass="aviso" />
                        <asp:ValidationSummary ID="vsArea1" runat="server" CssClass="aviso" ValidationGroup="area1" />
                        <asp:ValidationSummary ID="vsArea2" runat="server" CssClass="aviso" ValidationGroup="area2" />
                    </td>
                </tr>
              
            </table>
  • Determinando permissão FullTrust para aplicações .net remotas - Setting FullTrust with CasPol.exe

    Quando uma aplicações windows forms é publicada em um servidor da rede, e necessita que os usuários acessem essa aplicação, por padrão o framework do cliente não tem permissão para executar todos os recursos da aplicação remota! Por exemplo, quando a aplicação acessa o banco de dados SQL Server.
    Este erro ocorre quando o usuário cliente da rede tenta acessar a aplicação remota que necessita de permissão para executar o System.Data.SQLClient:

    System.Exception: BBL: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

     Como solução, existe a ferramenta Code Access Security Policy Tool (Caspol.exe) onde os administradores podem alterar as políticas de segurança para:
    -machine policy level
    -user policy level
    -enterprise policy level
     
    O Caspol.exe encontra-se na pasta do framework
    C:\WINDOWS\Microsoft.NET\Framework\Versão do Framework\CasPol.exe

    Para determinar permissão FullTrust para as aplicações da rede, execute o seguinte comando:

    CasPol.exe -q -m -ag All_Code -zone Intranet FullTrust

    Será apresentado a seguinte resposta:
    Grupo de códigos de união adicionado com a condição de associação "-zone" ao nível Machine. Êxito

    Após essa mensagem, sua aplicação terá permissão de execução FullTrust !
     
     
     
    November 22

    Consumindo Web Services no ASP Classic 3.0

    Muitas vezes você encontra projetos feitos no "ASP Classic"(Nao .net) funcionando perfeitamente que nao sera migrado para .NET. Seu gerente solicita uma alteração e voce tem de consumir um método web service .NET. Muitos desenvolvedores estão acostumados em consumir métodos Web Services em projetos feitos na plataforma .NET. Para aqueles que necessitam consumir métodos em uma linguagem nao .NET, mostrarei um exemplo passo a passo:

    Neste exemplo, será utilizado ASP Classic para o desenvolvimento da página, e framework 2.0 para o web service.

    Primeiro, vamos criar o Web Service. Abra o Microsoft Visual Studio 2005 e inicie um novo projeto como na figura 1.
    File > New Projet  - Selecione o template "ASP.NET Web Service Application" e coloque o nome da sua aplicação.
     
    new-ws
    Figura 1
    Abra o Solution Explorer para renomear o arquivo "Service1.asmx" para "ws.asmx" como na figura 2
    solution
    Figura 2

    Clique com o botão direto sobre o arquivo "ws.asmx" e acesse o código fonte igual na figura 3

    solution-code
    Figura 3

    Importar a biblioteca System.Data e adicionar o método abaixo na classe do seu serviço. Esse método exemplo é necessário informar um parâmetro "fornecedorID",  para retornar o DataSet com 1 datatable, e 1 registro.

    <WebMethod(Description:="Método que retorna um dataset")> _
        Public Function ResgataDados(ByVal FornecedorID As Int32) As DataSet
            Dim dtsDados As New DataSet("dtsDados") 'Cria dataset
            dtsDados.Tables.Add("dtProdutos") 'Adiciona datatable
            'Adiciona colunas
            dtsDados.Tables("dtProdutos").Columns.Add("FornecedorID", GetType(Integer))
            dtsDados.Tables("dtProdutos").Columns.Add("ProdutoID", GetType(Integer))
            dtsDados.Tables("dtProdutos").Columns.Add("Descricao", GetType(String))
            dtsDados.Tables("dtProdutos").Columns.Add("Estoque", GetType(Integer))
            'Cria registro
            Dim dr As DataRow
            dr = dtsDados.Tables(0).NewRow
            dr("FornecedorID") = FornecedorID
            dr("ProdutoID") = 1010
            dr("Descricao") = "Descrição do produto"
            dr("Estoque") = 20
            'Adiciona o novo registro no datatable 'dtProdutos' do dataset
            dtsDados.Tables(0).Rows.Add(dr)
            Return dtsDados
        End Function

     
    O código ficará assim:

    Imports System.Web
    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    Imports System.Data

    <WebService(Namespace:="
    http://tempuri.org/")> _
    <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Public Class Service
         Inherits System.Web.Services.WebService

        <WebMethod(Description:="Método que retorna um dataset")> _
            Public Function ResgataDados(ByVal FornecedorID As Int32) As DataSet
            Dim dtsDados As New DataSet("dtsDados") 'Cria dataset
            dtsDados.Tables.Add("dtProdutos") 'Adiciona datatable
            'Adiciona colunas
            dtsDados.Tables("dtProdutos").Columns.Add("FornecedorID", GetType(Integer))
            dtsDados.Tables("dtProdutos").Columns.Add("ProdutoID", GetType(Integer))
            dtsDados.Tables("dtProdutos").Columns.Add("Descricao", GetType(String))
            dtsDados.Tables("dtProdutos").Columns.Add("Estoque", GetType(Integer))
            'Cria registro
            Dim dr As DataRow
            dr = dtsDados.Tables(0).NewRow
            dr("FornecedorID") = FornecedorID
            dr("ProdutoID") = 1010
            dr("Descricao") = "Descrição do produto"
            dr("Estoque") = 20
            'Adiciona o novo registro no datatable 'dtProdutos' do dataset
            dtsDados.Tables(0).Rows.Add(dr)
            Return dtsDados
        End Function

    End Class
     
    Agora vamos testar seu web service.
    DEBUG > Start Debugging ou pressine a tecla F5
    Será apresentada a descrição do seu serviço como na figura 4
    figura-4
    Figura 4

    Clique sobre o método "ResgataDados", informe um número de fornecedorid inteiro e depois em clique em "chamar" invocando seu método. Figura 5
    figura-5
    Figura 5

    O retorno XML do método deve ser igual a figura 6:
    figura-6
    Figura 6

    Na descrição do método, é apresentado o "envelope XML". Esse envelope, é o XML padrão que devemos formatar no ASP, e mandar para o nosso método no web service, e assim o método será invocado obtendo o resultado esperado. Figura 7
    figura-7
    Figura 7

    Artigo incompleto!