2011-11-17 31 views
5

Cần gọi hàm nội dung Trang từ Trang Chính. Vui lòng cho tôi biết nếu cần thêm dữ liệu.Cách gọi hàm Nội dung Trang từ Master Page

MasterPage.master.cs trông giống như

protected void Required_Function(object sender, EventArgs e) 
{ 
    // call Update_Content_Page() from content page 
} 

Default.aspx trông giống như

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="contentPlaceHolder" Runat="Server"> 

<asp:Label ID="Label1" runat="server" Text="Label">Hello people!</asp:Label> 

</asp:Content> 

Default.aspx.cs trông giống như

using… 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Update_Content_Page() 
    { 
     Label1.Text=”Hello world”; 
    } 
} 
+1

bản sao có thể có của [Phương thức gọi trong trang chính] (http://stackoverflow.com/questions/6332889/call-method-in-master-page) –

+2

Nó không phải là. Tôi hỏi làm thế nào để gọi hàm nội dung Trang từ Master Page không phải là cách khác. –

+0

Về nguyên tắc cũng giống nhau. –

Trả lời

6

bạn có thể thử như thế này. không chính xác nhưng sẽ giúp bạn .....

Bạn có thể kế thừa trang của mình từ một lớp cơ sở. Sau đó, bạn có thể tạo một phương thức ảo trong lớp cơ sở của bạn sẽ được ghi đè trong trang của bạn. Sau đó bạn có thể gọi đó là phương pháp ảo từ trang chủ như thế này -

(cphPage.Page as PageBase).YourMethod(); 

Ở đây, cphPage là ID của ContentPlaceHolder trong trang chủ của bạn. PageBase là lớp cơ sở có chứa phương pháp YourMethod.

+0

Nó có thể hoạt động, nhưng cách tiếp cận này quá phức tạp. Tôi sẽ thử nó lần sau. Có lẽ :) Nhưng cảm ơn bạn rất nhiều anyway. –

+0

Bạn có thể vui lòng xây dựng tôi không thể hiểu được ?? Kiểm tra điều này - http://stackoverflow.com/questions/13508855/accessing-content-page-method-from-masterpage-method –

1

Tôi thường thấy rằng khi MasterPage cần gọi một hàm trong một ContentPage, bạn có một lỗ hổng trong thiết kế trang của bạn. MasterPage không cần phải biết gì về các trang nội dung. Nhưng nếu bạn cảm thấy rằng đây là cách phù hợp với bạn ở đây là guide từ CodeProject

+0

Đồng ý một phần với bạn. Trong 90% các trường hợp, nó sẽ hoạt động như bạn đã nói. Nhưng không có thứ như "một kích thước phù hợp với tất cả". Vui lòng xem ví dụ được cung cấp trong một trong các câu trả lời dưới đây: http://www.asp.net/master-pages/tutorials/interacting-with-the-content-page-from-the-master-page-cs –

+0

Có , bạn là đúng :) Đôi khi bạn cần phải thay đổi các quy tắc một chút để có được kết quả mà bạn muốn. Nhưng điều quan trọng là phải biết khi nào bạn làm điều này, và tại sao :) –

1

Cá nhân tôi đã làm một mẹo sử dụng jquery: Khi tôi nhấp vào nút chính, nó thực sự đã nhấp vào nút trang nội dung có tên 'saveButton' và sử dụng chức năng của nó:

HTML:

enter code here 

đang .master jquery:

function tester() { 
     console.log("Testing"); 
     $("[id$='SaveButton']").click(); 
    } 

tôi đã sử dụng id $ = 'SaveButton vì một Bạn có thể biết bây giờ, ASP.NET đổi tên các điều khiển khi chúng ở bên trong một cái chủ, một bộ lặp, một khung lưới và các điều khiển chứa khác. $ id = 'stuff' xác nhận rằng ID kiểm soát kết thúc bằng 'stuff'.

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