Autor: Dflying Chen ( http://dflying.cnblogs.com/ )
PD: Gracias al cariño de todos, he aprendido mucho durante los dos meses que estuve instalada en el parque del blog, hice muchos amigos y recibí muchas oportunidades. Actualmente tengo el honor de traducir un libro de Atlas: Fundamentos de Atlas: Desarrollo rápido de Ajax con ASP.NET 2.0, que se espera que sea publicado por la Editorial Popular de Correos y Telecomunicaciones en tres meses. Por lo tanto, he estado bastante ocupado durante este período y el blog no se puede actualizar con tanta frecuencia como hace algún tiempo. Por la presente me disculpo. Por supuesto, los amigos pueden continuar discutiendo preguntas relacionadas con Atlas y haré todo lo posible para responderlas.
En los próximos dos meses, espero esforzarme por lograr la excelencia en la traducción de Foundations of Atlas, por lo que definitivamente habrá muchas cuestiones que deberán discutirse con amigos, como la terminología, el estilo de traducción, etc. ¡Gracias de antemano aquí!
En el artículo anterior (consulte: Desarrollo del control extensor del lado del servidor ASP.NET Atlas: escritura del comportamiento del lado del cliente), ya hemos escrito el comportamiento del lado del cliente. En este artículo, resumámoslo y ejecútelo como un control del lado del servidor.
Primero, vaya al archivo ValidateUserNameProperties.cs. Esta clase hereda de la clase base TargetControlPropertiesBase <Control>, que define la relación de mapeo entre los valores de propiedad del cliente y los valores de propiedad del servidor. Al mismo tiempo, la clase base TargetControlPropertiesBase<Control> y Atlas Control Extender ya han hecho el trabajo de generar un script XML del lado del cliente. Solo necesita definir los atributos requeridos por su comportamiento.
Se deben agregar cinco atributos: CheckResultLabelID, ServiceName, MethodName, ValidMessage y InvalidMessage. Para simplificar, sólo doy un ejemplo de un atributo
[DefaultValue("")]
[PropiedadReferenciaID(tipode(WebControl))]
[Propiedad requerida()]
cadena pública CheckResultLabelID
{
conseguir
{
return GetPropertyStringValue("CheckResultLabelID");
}
colocar
{
SetPropertyStringValue("CheckResultLabelID", valor);
}
}
La definición de CheckResultLabelID está precedida por tres atributos:
DefaultValue: establece el valor predeterminado de este atributo.
IDReferenceProperty: especifica que esta propiedad solo puede almacenar el ID de un tipo de control específico.
RequiredProperty: especifica que esta propiedad es obligatoria.
Para otras propiedades, puede consultar los archivos fuente que se proporcionan más adelante.
Luego eche un vistazo al archivo ValidateUserNameExtender.cs. Las partes principales son las siguientes:
[Designer(typeof(ValidateUserNameDesigner))]
[ClientScriptResource("Dflying", "ValidateUserNameBehavior", "Dflying.Atlas.ControlTookit.ValidateUserName.ValidateUserNameBehavior.js")]
[Script requerido (tipo de (ValidateUserNameExtender))]
clase pública ValidateUserNameExtender: ExtenderControlBase<ValidateUserNameProperties, Control>
{
}
Entre ellos, nuestro ValidateUserNameExtender hereda de la clase base ExtenderControlBase<ValidateUserNameProperties, Control> y obtiene algunas operaciones comunes. Y se aplican tres atributos a la clase:
Diseñador: especifique el nombre de clase del diseñador de este extensor (utilizado para proporcionar soporte en tiempo de diseño).
ClientScriptResource: especifica la información necesaria para generar scripts XML Atlas del cliente. Dflying y ValidateUserNameBehavior aquí deben ser consistentes con los definidos en ValidateUserNameBehavior.js anterior.
RequiredScript: especifique el script requerido por el cliente, para que Atlas vincule ValidateUserNameBehavior.js a la página en forma de archivo axd.
Finalmente, está el archivo ValidateUserNameDesigner.cs, donde puede agregar soporte en tiempo de diseño. Deje que su control tenga diferentes estilos de visualización con diferentes valores de propiedad establecidos en Visual Studio. Para simplificar aquí, no agregaré soporte en tiempo de diseño.
En este punto, nuestro Extender ha sido escrito y la DLL generada después de una compilación de lanzamiento se puede usar directamente. En el próximo artículo, demostraré el uso de este Extender en un programa real.