2012-09-07 21 views
5

Tengo una página sencilla que muestra la lista de miniaturas,¿por qué se agrega un carácter # a la url?

Quiero añadir un buscapersonas, he añadido dos acciones une

<li class="ui-pagination-next">@Html.ActionLink("Next", "Paginate", "Home", new { nbSkip = ViewBag.nextSkip }, null)</li> 

cuando hago clic en el enlace que estoy redirigido a

http://localhost:41626/#/Home/Paginate?nbSkip=60 

en lugar de

http://localhost:41626/Home/Paginate?nbSkip=60 , 

¿alguien sabe por qué el '#' personaje se agrega a la URL?

Ruta copnfig:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

Respuesta

2

De su análisis de la clase de liui-pagination-nextim assuming jQuery Mobile se está utilizando aquí.

jQuery Mobile por defecto, makes your links AJAX enabled


Si lo desea, puede evitar esto usando:

$.mobile.ajaxLinksEnabled = false; 

<script type="text/javascript"> 
    $(function(){ 
     $.mobile.ajaxLinksEnabled = false; 
    }); 
</script> 
+0

la cuestión no era la forma de resolver esto, pero lo que es hash y por qué se utiliza –

+0

@ParvSharma vuelve a formatear mi responder. Mi respuesta proporciona enlaces de documentación sobre por qué esto está en su lugar, y la opción de desactivar – Curt

+0

AWSM es ahora .. –

0

Si yo fuera usted, me gustaría utilizar Ajax Raw ActionLink:

@Ajax.RawActionLink("NameofLink", "Action", "Controller", new { oid = 0, type = "oid and type are 2 parameters you want to send to action " }, new { id = "btnNewB", @class = "anyclass" }) 
4

al mirar en su código que podría encontrar ui-pagination-next
esto podría significar que algún otro marco JS está realmente escuchando a los eventos de clic de este enlace y haciendo algún tipo de ajax
de hash "#" personaje está siendo utilizado de manera que en realidad el navegador no redirecciona a la página y al mismo tiempo mantiene el historial
, por lo que si presiona el botón Atrás de los navegadores se elimina esta parte adicional del enlace después de # y cualquier marco JS suscrito a la evet sabe cómo manejarlo entonces

en términos más simples.
cualquier cosa después del # en un url no se envía al servidor.Debido a que algunos JS Framework manejan la parte ajax, no quiere que esa solicitud vaya directamente al servidor y al mismo tiempo muestre la apariencia adecuada en la barra de direcciones de los navegadores, por lo tanto agrega lo que tenga en el enlace después del # y continúa con AJAX

heres un artículo en profundidad utilizando hash para atrás y hacia adelante

0

Gracias a todos por sus respuestas,

bien visto @curt, de hecho estoy usando jQuery móvil, y lo que estaba causando el problema es mobile.changePage

Ahora estoy usando un botón simple para navegar lanzando páginas, pero

$.mobile.ajaxLinksEnabled = false; 

No resuelve mi problema con ajax link's. Por lo que he hecho esto, y está funcionando ahora

@Html.ActionLink("Previous", "Index", new { nbSkip = ViewBag.previousSkip }, new { data_role = "button", data_icon = "arrow-l", rel = "external", data_ajax = false }) 

Gracias @Parv Sharma por su explicación

Cuestiones relacionadas