2012-09-07 7 views
5

Tôi có một trang đơn giản hiển thị danh sách thumbnail,tại sao một # ký tự được thêm vào url?

Tôi muốn thêm một máy nhắn tin, tôi đã bổ sung thêm hai hành động liên kết

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

khi tôi nhấp vào liên kết Tôi đang chuyển hướng đến

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

thay vì

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

không ai biết lý do tại sao '#' ký tự được thêm vào 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 } 
     ); 
    } 
} 

Trả lời

2

Từ nhìn vào lớp li lại ui-pagination-nextim assuming jQuery Mobile đang được sử dụng ở đây.

jQuery Mobile theo mặc định, makes your links AJAX enabled


Nếu bạn muốn, bạn có thể ngăn chặn điều này bằng cách sử dụng:

$.mobile.ajaxLinksEnabled = false; 

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

câu hỏi không phải là cách giải quyết này, nhưng băm là gì và tại sao nó được sử dụng –

+0

@ParvSharma dạng của tôi câu trả lời. Câu trả lời của tôi cung cấp các liên kết tài liệu về lý do tại sao điều này xảy ra và tùy chọn vô hiệu hóa – Curt

+0

AWSM bây giờ là .. –

0

Nếu tôi là bạn, tôi sẽ sử dụng 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

bằng cách nhìn vào mã của bạn tôi có thể tìm ui-pagination-next
điều này có thể có nghĩa là một số khuôn khổ JS khác đang thực sự lắng nghe những sự kiện click liên kết này và thực hiện một số loại ajax
băm "#" nhân vật đang được sử dụng để thực trình duyệt không chuyển hướng đến trang và đồng thời duy trì lịch sử
vì vậy nếu bạn nhấn nút quay lại trình duyệt, phần bổ sung này của liên kết sau khi # bị xóa và mọi khung công tác JS đã đăng ký với evet biết cách xử lý nó sau đó

với các thuật ngữ đơn giản hơn.
mọi thứ sau # trong số url không được gửi tới máy chủ.Bởi vì một số khung công tác JS đang xử lý phần ajax, nó không muốn yêu cầu đó phải trực tiếp đến máy chủ và đồng thời hiển thị đúng trong thanh địa chỉ trình duyệt do đó bổ sung bất cứ điều gì bạn có trong liên kết sau # và tiếp tục với AJAX

heres một bài báo sâu sắc sử dụng băm cho back và forward

0

Cảm ơn tất cả các bạn để được trả lời của bạn,

cũng thấy @curt, trên thực tế tôi đang sử dụng jQuery thoại di động, và những gì đã gây ra vấn đề là mobile.changePage

Bây giờ tôi đang sử dụng nút đơn giản để điều hướng các trang ném, nhưng

$.mobile.ajaxLinksEnabled = false; 

Không giải quyết được sự cố của tôi với liên kết ajax. Vì vậy, tôi đã làm điều này, và nó làm việc bây giờ

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

Cảm ơn @Parv Sharma cho lời giải thích của bạn