2012-09-07 22 views
5

Mam prostą stronę wyświetlanie listy miniatur,dlaczego znak # jest dodawany do adresu URL?

Chcę dodać pager, dodałem dwa działania łączy

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

po kliknięciu na link jestem przekierowywany do

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

zamiast

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

czy ktoś wie dlaczego '#' znak jest dodawany do adresu URL?

Route 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 } 
     ); 
    } 
} 

Odpowiedz

2

Od patrząc na klasę li z ui-pagination-nextim assuming jQuery Mobile została tutaj użyciem.

jQuery komórkowy domyślnie makes your links AJAX enabled


Jeśli chcesz, możesz temu zapobiec za pomocą:

$.mobile.ajaxLinksEnabled = false; 

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

pytanie nie było sposobu, aby rozwiązać ten problem, ale to, co jest hash i dlaczego jest on używany –

+0

@ParvSharma sformatowaniu mojego odpowiedź. Moja odpowiedź zawiera linki do dokumentacji, dlaczego tak się dzieje, a opcja wyłączenia – Curt

+0

AWSM jest teraz .. –

0

If I were you, chciałbym użyć 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

patrząc na kodzie mogę znaleźć ui-pagination-next
może to oznaczać, że niektóre inne ramy JS jest rzeczywiście słuchanie wydarzeń kliknięcie tego linku i robi jakieś ajax
hash "#" znak jest używany tak, że rzeczywiście przeglądarka nie przekierowuje do strony i jednocześnie zachowuje historię
, więc jeśli naciśniesz przycisk wstecz przeglądarki, ta dodatkowa część linku po # zostanie usunięta, a wszelkie struktury JS zasubskrybowane przez Evet będą wiedziały, jak sobie z tym poradzić, to:

w prostszych słowach.
Cokolwiek po # w url nie jest wysyłane na serwer.Ponieważ niektóre struktury JS obsługują część ajaxową, nie chce, aby ta prośba bezpośrednio trafiała na serwer, a jednocześnie powinna wyglądać poprawnie w pasku adresu przeglądarki, dlatego dodaje to, co masz w łączu po numerze # i kontynuuje z AJAX

heres artykuł indepth używając skrótu do tyłu i do przodu

0

Dziękuję wszystkim za odpowiedzi,

dobrze widoczne @curt w rzeczywistości używam jQuery mobile, a co było przyczyną problemu jest mobile.changePage

Teraz używam prostego przycisku do nawigacji stron rzutowych, ale

$.mobile.ajaxLinksEnabled = false; 

Nie rozwiązuje mojego problemu z linkiem ajax link. Więc zrobiłem to i to działa teraz

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

Thanks @Parv Sharma za wyjaśnienie