Si lo enfocamos desde el punto de vista de css (como parece que por allí viene el problema), podríamos decir que la propiedad z-index de las opciones del menú no están siendo captadas… (dado que en otros browsers si funcionan bien).
Entonces, vamos a proponer dos soluciones:
1.- Esta es la solución rápida a este tema, y consiste en añadir la siguiente línea de código en el Page_Load de cada página que usa el control asp:menu
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadContext.Request.Browser.Adapters.Clear()
End Sub
Si estás usando masterpages, es suficiente que pongas ese código en el Page_Load del masterpage.
Y entonces la figura cambia:
Nota: En algunas aplicaciones, esta solución ha sido suficiente, pero en otras no me ha funcionado, así que veamos una solución alternativa recordada por Felipe ( o David? ).
2.- Esta solución consiste en añadir al proyecto una carpeta ASP.NET llamada App_Browsers, luego de eso añadan un Nuevo item a la carpeta , elijan el archivo BrowserFile1.browser, el cual finalmente debe mostrar este código:
<browsers> <browser id="NewBrowser" parentID="Mozilla"> <identification> <userAgent match="Unique User Agent Regular Expression" /> </identification> <capture> <userAgent match="NewBrowser (?'version'\d+\.\d+)" /> </capture> <capabilities> <capability name="browser" value="My New Browser" /> <capability name="version" value="${version}" /> </capabilities> </browser> <browser refID="Mozilla"> <capabilities> <capability name="xml" value="true" /> </capabilities> </browser> <browser refID="safari1plus"> <controlAdapters> <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="" /> </controlAdapters> </browser> </browsers>
Lo único que yo he añadido es el último bloque, el cual se encarga de solucionar el poblema con Google Chrome.
Otra forma es asegurarse que el control asp:menu funcione sobre todos los browsers, haciendo que renderice en etiquetas ul-li... para ello usamos css adapters http://www.asp.net/CSSAdapters/Menu.aspx
Espero que les sea de utilidad ;)
2 comentarios:
amigos, hay otra solución algo mas elegante al tema:
1) Agreguen una carpeta en el proyecto llamada "App_Browsers"
2) En la carpeta recien agregada, agreguen un archivo de tipo "Archivo de Explorador (aparece como selección en el cuadro de dialogo agregar archivo del IDE .net) y dejenlo con el nombre por defecto, ej: "Browserfile.browser"
3) Luego, editen este archivo recien creado, vayan al final del archivo, pero antes de la sentencia y escriban lo siguiente:
3) guarden los cambios y prueben la aplicacion con el Chrome.
PD: "safari1plus" es el código interno del Chrome y con esto funcionará.
Saludos desde Chile,
David Yañez
davidyc@live.cl
Hola Felipe,
Gracias por tu aporte. Ya me había olvidado de este post.
Tienes razón, el método que propones funciona muy bien. Ya lo había usado en producción inclusive. Estoy actualizando el post con tu sugerencia.
Saludos.
Publicar un comentario