none
Redireccion en ASP:NET RRS feed

  • Pregunta

  • estuve probando lo mismo, pero en ASP.NET 3.5 con Visual Web Developer, lo cual es mas facil, y funciona el problema es en la linea 13 con el caracter <%@ , vean ustedes donde esta el error:

    <!-- ASP.NET 3.5 Security Control and Redirect Website --> 
    <head runat="server">
    <%@ Page Language="C#" ValidateRequest="true";
    Response.Write(HttpUtility.HtmlEncode(Request.Form["name"]));
    Response.Write(HttpUtility.UrlEncode(urlString));
    Response.BufferOutput = "true";
    if (UserLanguage == "Deutsch")
    {
      Response.Redirect(http://deu.misitio.com);
    }
    else if (UserLanguage == "English")
    {
      Response.Redirect(http://eng.misitio.com);
    }
    else if (UserLanguage == "Français")
    {
    	Response.Redirect("http://fra.misitio.com");
    }
    else if (UserLanguage == "Español")
    {
      Response.Redirect("http://esp.misitio.com");
    }
    else if (UserLanguage == "Italiano")
    {
    	Response.Redirect("http://ita.misitio.com");
    }
    else if (UserLanguage == "日本語")
    {
    	Response.Redirect("http://jap.misitio.com");
    }
    %>
    </head>
    


    Tengo en dos versiones en HTML y ASPX, en cual de ellos funcionara.
    En tiempos de crisis, solo la creatividad es mas importante que el conocimiento
    • Editado Darkgeek miércoles, 21 de julio de 2010 18:49
    martes, 12 de enero de 2010 7:00

Respuestas

  • Hola Darkgeek,

    @ se utiliza para añadir directivas de página, es decir, atributos específicos de la página. Normalmente se ponen al principio del fichero, aunque se pueden incluir en cualquier parte.

    En el código de ejemplo no se ve donde asignas el valor de la variable UserCulture. Si quieres obtener según el idioma del navegador puedes utilizar el siguiente código:

    <%@ Page Language="C#"%>
    <%
        // Obtiene el idioma del navegador
        string UserLanguage = Page.Request.UserLanguages[0]; 
        string url;
    
        Response.BufferOutput = true;
        switch (UserLanguage)
        {
            case "es":
                url = "http://esp.audioestudio.net";
                break;
            case "de":
                url = "http://deu.audioestudio.net";
                break;
            case "fr":
                url = "http://fra.audioestudio.net";
                break;
            case "it":
                url = "http://ita.audioestudio.net";
                break;
            case "jp":
                url = "http://jap.audioestudio.net";
                break;
            default: // por defecto
                url = "http://eng.audioestudio.net";
                break;
        }
        Response.Redirect(url);
    %>

    Si por el contrario es un parámetro que se pasa a la página por QueryString, puedes cambiar la línea por el siguiente código:

    string UserLanguage = Page.Request.QueryString["language"];

    y tendrás que llamar a la página pasando el parámetro language:

    http://localhost/index.aspx?language=es

    Por último, también podrías redireccionar según la cultura actual, para esto deberías utilizar el siguiente código:

    string UserLanguage = System.Globalization.CultureInfo.CurrentCulture.Name;

    Espero que te sirva de ayuda.

    Directiva de página @ Page
    http://msdn.microsoft.com/es-es/library/ydy4x04a.aspx

    • Marcado como respuesta Darkgeek martes, 12 de enero de 2010 23:04
    martes, 12 de enero de 2010 10:02

Todas las respuestas

  • Es que el  <%@Page no va ahí... es la primera línea que hay que poner en un webform, elimínalo o ponlo en la primera línea de tu webform (si no es que ya existe) y debería funcionar.

    Saludos
    Jesús Bosch Aiguadé
    http://geeks.ms/blogs/jbosch
    http://uoc.dotnetclubs.com
    martes, 12 de enero de 2010 9:54
  • Hola Darkgeek,

    @ se utiliza para añadir directivas de página, es decir, atributos específicos de la página. Normalmente se ponen al principio del fichero, aunque se pueden incluir en cualquier parte.

    En el código de ejemplo no se ve donde asignas el valor de la variable UserCulture. Si quieres obtener según el idioma del navegador puedes utilizar el siguiente código:

    <%@ Page Language="C#"%>
    <%
        // Obtiene el idioma del navegador
        string UserLanguage = Page.Request.UserLanguages[0]; 
        string url;
    
        Response.BufferOutput = true;
        switch (UserLanguage)
        {
            case "es":
                url = "http://esp.audioestudio.net";
                break;
            case "de":
                url = "http://deu.audioestudio.net";
                break;
            case "fr":
                url = "http://fra.audioestudio.net";
                break;
            case "it":
                url = "http://ita.audioestudio.net";
                break;
            case "jp":
                url = "http://jap.audioestudio.net";
                break;
            default: // por defecto
                url = "http://eng.audioestudio.net";
                break;
        }
        Response.Redirect(url);
    %>

    Si por el contrario es un parámetro que se pasa a la página por QueryString, puedes cambiar la línea por el siguiente código:

    string UserLanguage = Page.Request.QueryString["language"];

    y tendrás que llamar a la página pasando el parámetro language:

    http://localhost/index.aspx?language=es

    Por último, también podrías redireccionar según la cultura actual, para esto deberías utilizar el siguiente código:

    string UserLanguage = System.Globalization.CultureInfo.CurrentCulture.Name;

    Espero que te sirva de ayuda.

    Directiva de página @ Page
    http://msdn.microsoft.com/es-es/library/ydy4x04a.aspx

    • Marcado como respuesta Darkgeek martes, 12 de enero de 2010 23:04
    martes, 12 de enero de 2010 10:02
  • Gracias Alex, con eso funciona bien, pero lo tuve que hacer en un default.aspx, como veras en el codigo segun como funcione, el archivo lee el idioma del navegador y se redirige a los sitios correspondiente, si todas son "false" se dirige al index.html en el mismo directorio.

    <%@ Page Language="C#" ValidateRequest="true" AutoEventWireup="true" ResponseEncoding="utf-8" %>
    <!DOCTYPE html "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <%
        Response.Write(HttpUtility.HtmlEncode(Request.Form["name"]));
        // Obtiene el idioma del navegador
        string UserLanguage = Page.Request.UserLanguages[0]; 
        string url;
        Response.BufferOutput = true;
        switch (UserLanguage)
        {
            case "de":
                url = "http://deu.audioestudio.net";
                break;
            case "en":
                url = "http://eng.audioestudio.net";
                break;
            case "fr":
                url = "http://fra.audioestudio.net";
                break;
            case "it":
                url = "http://ita.audioestudio.net";
                break;
            case "es":
                url = "http://esp.audioestudio.net";
                break;
            case "jp":
                url = "http://jap.audioestudio.net";
                break;
            default: // Principal, si las anteriores es false
                url = "index.html";
                break;
        }
        Response.Redirect(url);
    %>
        <title></title>
    </head>
    <body></body>
    </html>

    Espero que sea asi como creo, la funcion seria lo mismo que if..esleif...esle, pero en un aspx

    Saludos.


    En tiempos de crisis, solo la creatividad es mas importante que el conocimiento
    martes, 12 de enero de 2010 23:11