Autor: Dflying Chen ( http://dflying.cnblogs.com/ )
PS: Graças ao carinho de todos, aprendi muito durante os dois meses em que me estabeleci no blog park, fiz muitos amigos e recebi muitas oportunidades. Atualmente tenho a honra de traduzir um livro do Atlas: Foundations of Atlas: Rapid Ajax Development with ASP.NET 2.0, que deverá ser publicado pela People's Posts and Telecommunications Publishing House em três meses. Portanto, estive bastante ocupado durante este período e o blog não pode ser atualizado com a mesma frequência que há algum tempo. Peço desculpas. É claro que amigos são bem-vindos para continuar discutindo questões relacionadas ao Atlas, e farei o possível para respondê-las.
Nos próximos dois meses, espero buscar a excelência na tradução dos Fundamentos do Atlas, então com certeza haverá muitos assuntos que precisam ser discutidos com os amigos, como terminologia, estilo de tradução, etc. Desde já agradeço aqui!
No artigo anterior (consulte: Desenvolvendo o controle Extender do lado do servidor ASP.NET Atlas - escrevendo o comportamento do lado do cliente), já escrevemos o comportamento do lado do cliente. Neste artigo, vamos encerrar e executá-lo como um controle do lado do servidor.
Primeiro, acesse o arquivo ValidateUserNameProperties.cs. Esta classe herda da classe base TargetControlPropertiesBase<Control>, que define o relacionamento de mapeamento entre os valores das propriedades do cliente e os valores das propriedades do servidor. Ao mesmo tempo, a classe base TargetControlPropertiesBase<Control> e o Atlas Control Extender já fizeram o trabalho de gerar o script XML do lado do cliente para você. Você só precisa definir os atributos exigidos pelo seu comportamento.
Cinco atributos, CheckResultLabelID, ServiceName, MethodName, ValidMessage e InvalidMessage, devem ser adicionados. Para simplificar, dou apenas um exemplo de atributo
[DefaultValue("")]
[IDReferenceProperty(typeof(WebControl))]
[Propriedade Obrigatória()]
string pública CheckResultLabelID
{
pegar
{
return GetPropertyStringValue("CheckResultLabelID");
}
definir
{
SetPropertyStringValue("CheckResultLabelID", valor);
}
}
A definição de CheckResultLabelID é precedida por três atributos:
DefaultValue: Defina o valor padrão deste atributo.
IDReferenceProperty: especifica que esta propriedade só pode armazenar o ID de um tipo específico de controle.
RequiredProperty: especifica que esta propriedade é obrigatória.
Para diversas outras propriedades, você pode consultar os arquivos de origem fornecidos posteriormente.
Em seguida, dê uma olhada no arquivo ValidateUserNameExtender.cs. As partes principais são as seguintes:
[Designer(typeof(ValidateUserNameDesigner))]
[ClientScriptResource("Dflying", "ValidateUserNameBehavior", "Dflying.Atlas.ControlTookit.ValidateUserName.ValidateUserNameBehavior.js")]
[RequiredScript(typeof(ValidateUserNameExtender))]
classe pública ValidateUserNameExtender: ExtenderControlBase<ValidateUserNameProperties, Control>
{
}
Entre eles, nosso ValidateUserNameExtender herda da classe base ExtenderControlBase<ValidateUserNameProperties, Control> e obtém algumas operações comuns. E três atributos são aplicados à classe:
Designer: Especifique o nome da classe do designer deste Extender (usado para fornecer suporte em tempo de design).
ClientScriptResource: especifica as informações necessárias para gerar scripts XML do cliente Atlas. O Dflying e ValidateUserNameBehavior aqui devem ser consistentes com aqueles definidos no ValidateUserNameBehavior.js anterior.
RequiredScript: Especifique o script exigido pelo cliente, para que o Atlas vincule ValidateUserNameBehavior.js à página na forma de um arquivo axd.
Finalmente, há o arquivo ValidateUserNameDesigner.cs, onde você pode adicionar suporte em tempo de design. Deixe seu controle ter diferentes estilos de exibição com diferentes valores de propriedade definidos no Visual Studio. Para simplificar aqui, não adicionarei suporte em tempo de design.
Neste ponto, nosso Extender foi escrito e a DLL gerada após um Release Build pode ser usada diretamente. No próximo artigo, demonstrarei o uso deste Extender em um programa real.