2008-10-07 22 views
51

Tôi có một điều khiển liên kết ASP.NET trên biểu mẫu của tôi. Tôi muốn sử dụng nó cho javascript ở phía khách hàng và ngăn chặn nó gửi bài trở lại máy chủ. (Tôi muốn sử dụng điều khiển liên kết để tôi có thể làm da nó và vô hiệu hóa nó trong một số trường hợp, do đó, một thẻ thẳng lên không được ưa thích).Tắt đăng lại trên một <ASP: LinkButton>

Làm cách nào để ngăn không cho đăng lại máy chủ?

Trả lời

57

ASPX:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton> 

Mã đằng sau:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     someID.Attributes.Add("onClick", "return false;"); 
    } 
} 

gì ám như HTML là:

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a> 

Trong trường hợp này, những gì xảy ra là các chức năng onclick trở thành validator của bạn . Nếu nó sai, liên kết "href" không được thực thi; tuy nhiên, nếu đúng là href sẽ bị xử tử. Điều này giúp loại bỏ bài đăng của bạn trở lại.

+1

'' và thêm ở trên, khi nhấp vào không có gì xảy ra:/ – SearchForKnowledge

3

Trong C#, bạn muốn làm điều gì đó như thế này:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;"); 
0

Bạn cũng có thể muốn có chức năng client-side trả về false.

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" /> 

Bạn cũng có thể xem xét:

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span> 

tôi sử dụng lớp nhấp vào để thiết lập những thứ như con trỏ, màu sắc, vv để xuất hiện của nó cũng tương tự như một thẻ neo, nhưng tôi không phải lo lắng về việc nó được đăng lại hoặc phải làm href = "javascript: void (0);" lừa. đang

+1

OnClick liên kết với máy chủ sự kiện bên cạnh, chứ không phải sự kiện phía khách hàng. onclientclick là sự kiện khách hàng –

34

Điều này nghe có vẻ giống như một câu trả lời vô ích ... Nhưng tại sao bạn sử dụng một LinkButton cho một cái gì đó hoàn toàn phía khách hàng? Sử dụng thẻ neo HTML chuẩn và đặt hành động onclick thành Javascript của bạn.

Nếu bạn cần máy chủ tạo văn bản của liên kết đó, hãy sử dụng asp:Label làm nội dung giữa thẻ bắt đầu và thẻ kết thúc của neo.

Nếu bạn cần tự động thay đổi hành vi tập lệnh dựa trên mã phía máy chủ, hãy xem xét asp:Literal làm kỹ thuật.

Nhưng trừ khi bạn đang thực hiện hoạt động phía máy chủ từ sự kiện Click của LinkButton, có vẻ như không có nhiều điểm để sử dụng nó ở đây.

+0

Tôi đồng ý. Chủ yếu, tôi muốn sử dụng một làn da tôi đã tạo cho các nút liên kết được sử dụng ở nơi khác. – y0mbo

+0

Bạn có thể không sửa đổi làn da, hoặc căn cứ vào kiểu dáng của neo được đưa ra khỏi những thứ được sử dụng trong da? –

+2

Bạn có thể ưu tiên một nút liên kết ngay cả khi máy chủ postback bị tắt khi: 1) Bạn vẫn mong muốn lợi ích của một điều khiển thực hiện INamingContainer. Ví dụ, bạn có nhiều điều khiển người dùng trên một trang, mỗi trang chứa một LinkButton cần một ID duy nhất. 2) Bạn muốn giữ xác thực khách hàng asp. – eniac

5

Tôi nghĩ bạn nên điều tra bằng cách sử dụng điều khiển HyperLink. Đó là một điều khiển phía máy chủ (vì vậy bạn có thể thao tác khả năng hiển thị và như vậy từ mã), nhưng nó bỏ qua một thẻ 'ol' thường xuyên và không gây ra một postback.

0

Không ai có vẻ là làm nó như thế này:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else { this.innerHTML='Please Wait'; }"); 

Điều này dường như là cách duy nhất mà làm việc.

0

Tại sao không sử dụng bảng điều khiển cập nhật ajax trống và liên kết sự kiện nhấp chuột của liên kết với nó?Bằng cách này, chỉ có bảng cập nhật mới được cập nhật, do đó tránh được việc đăng lại và cho phép bạn chạy javascript

1

gọi hàm java script trên sự kiện onclick.

0

Thay vì thực hiện các thuộc tính:

public partial class _Default : System.Web.UI.Page{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    someID.Attributes.Add("onClick", "return false;"); 
}} 

Sử dụng:

OnClientClick="return false;" 

bên trong của asp: thẻ LinkButton

-1

sử dụng html liên kết thay vì liên kết asp và bạn có thể sử dụng nhãn ở giữa liên kết html cho phía máy chủ kiểm soát

23

Bạn có thể làm điều đó quá

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

Và nó dừng lại nút liên kết postback

1

Bạn đã cố gắng sử dụng OnClientClick?

var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" }; 

<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton> 
12

Chỉ cần thiết lập href = "#"

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton> 
1

Chỉ cần trải qua điều này trước vài phút, cách chính xác để làm điều đó là sử dụng

  1. OnClientClick
  2. Return False()

làm dòng mã ví dụ sau:

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/> 

Chỉ cần sao chép dòng đó từ mã làm việc của tôi.

0

Cái gì khác bạn có thể làm, nếu bạn muốn giữ vị trí cuộn của bạn là thế này:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" /> 
0

Trong jquery chức năng sẵn sàng, bạn có thể làm điều gì đó như dưới đây -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':'); 
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}"; 
$('a[id*=linkbutton]').attr('href', onclickcode); 
+1

Chào mừng bạn đến với StackOverflow! Kể từ khi OP không đề cập đến JQuery, câu trả lời của bạn là hơi off-topic.Để làm cho câu trả lời tốt hơn, bạn có thể đưa thêm ngữ cảnh về cách kết hợp JQuery vào đây. Mặt khác, vì câu hỏi đã được hỏi và trả lời (nhiều lần) 5 năm trước, chỉ có câu trả lời rất chủ đề mới có ích tại thời điểm này. – dg99

Các vấn đề liên quan