我正在編寫一個應用程序,並且我有一個用戶表單,這對用戶和管理員來說是一樣的。在不同的頁面上。在多個頁面上使用相同的表單?
我想只創建表單一次,然後能夠把它放在兩個不同的aspx文件。
我與「控制」嘗試過,但它然後獲取非常複雜試圖訪問字段從aspx頁面做計算的控制等
有另一種方式做到這一點?在一個地方創建表單,能夠將它添加到任何aspx頁面,並且可以輕鬆訪問它的控件?
我正在編寫一個應用程序,並且我有一個用戶表單,這對用戶和管理員來說是一樣的。在不同的頁面上。在多個頁面上使用相同的表單?
我想只創建表單一次,然後能夠把它放在兩個不同的aspx文件。
我與「控制」嘗試過,但它然後獲取非常複雜試圖訪問字段從aspx頁面做計算的控制等
有另一種方式做到這一點?在一個地方創建表單,能夠將它添加到任何aspx頁面,並且可以輕鬆訪問它的控件?
你必須創建母版:
http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx
,這樣就可以共享頁面之間的共同控制。母版頁也可以嵌套。你可以通過Master.FindControl(「abc」)從子頁面訪問母版頁上的控件。
編輯:看起來你想重用通用的功能,那麼你可能想要使用用戶控件,就像這個例子:
我已經有一個母版頁......對於我的標誌和菜單...你是說我應該爲用戶表單創建一個新的母版頁嗎? – 2011-03-18 14:59:02
什麼應該包含該用戶表單?一個頁面只能有一個MasterPage howerver母版頁可以嵌套,因此您可以創建帶有徽標和菜單的母版頁,然後使用該表單創建第二個頁面 - 就像模板一樣。但是如果你只想要新的控件,那麼你可以使用UserControl,它可以擁有自己的公共引擎 – Robert 2011-03-18 15:01:19
這並不是很困難。您可以提供一個訪問方法或將該控件內部公開。
示例:按下按鈕時,在控件內顯示TextBox
的內容的頁面。
控制
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
頁
<form runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<Test:Control ID="ctlTest" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
代碼(如果TextBox1的是公開的)
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = ctlTest.TextBox1.Text;
}
或者你可以擁有,控制的代碼
public string GetText()
{
return TextBox1.Text;
}
而在ASPX代碼頁
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = ctlTest.GetText();
}
什麼是如此的困難有關?
根據我的經驗,這是封裝頁面元素和相關代碼以供重用的正確方法。您只需公開要爲包含頁面提供的信息的屬性。 – Rozwel 2011-03-18 15:36:08
您創建了控件,並且不使用findControl()方法來訪問UserControl內部的控件,這是不可行或不適當的解決方案。
更好地使用Properies。定義屬性,所以你的控件可以被泛化,你可以在多個頁面上使用它。
定義關於訪問控件的「非常複雜」。 this.myUserControl.FindControl()或將訪問器設置爲公共工程。此外,理想情況下,如果邏輯適用於表單不應該在用戶控件中,然後通過公共屬性/方法公開? – 2011-03-18 15:04:55