簡體   English   中英

我應該如何創建具有可變布局的用戶控件?

[英]How should I go about creating a user control with variable layout?

我有一個包含許多子控件的用戶控件。 我希望能夠通過用戶控件的屬性來更改控件的布局(即更改子控件周圍的標記),但是我不想重復自己的子控件。 例如,這排除了在每個視圖中使用具有不同版本布局的MultiView,因為在這種情況下,我必須復制控件。 我也寧願使用標記,也不願直接為控件發出代碼(就像在服務器控件中那樣)。

舉一個人為的例子,說我有一個標簽和一個文本框。 在一種布局中,我希望div包含標簽和文本框,並使其相互重疊。 在另一個布局中,我希望它們並排包含在表中。

我是否應該繼續並在每個視圖之間復制控件? 似乎違反了DRY原則,但是我不確定是否有很多選擇。 一種局部解決方案是將多視圖的視圖放入命名容器中,這樣我至少可以節省自己必須為重復的控件ID加上前綴以使它們唯一的時間。

謝謝! 請隨時詢問以上內容是否沒有道理。

您可以使用模板化的用戶控件用戶控件的每個部分定義頁眉和頁腳模板。 從那里,您可以使用用戶控件上的CSS和/或公共屬性來設置控件的預定義(非模板化)組件的樣式。

聽起來確實像您應該繼續創建服務器控件,而不只是用戶控件。 您必須在代碼中創建標記,但這將為您提供最大的靈活性。

一個想法是創建第二個用戶控件,該用戶控件與設計文件上的第一個用戶控件克隆,但具有相同的代碼文件。

FileLayout1.ascx
FileLayout2.ascx

both of this have
CodeFile="FileLayout1.ascs.cs" Inherits="FileLayout1"

FileLayout1.ascs.cs

您可以加載1或2。

局限性/問題在於兩個ascx必須具有完全相同的控件名稱,並且您具有相同的控件2次(但是代碼僅是一次)

從我的角度來看,好主意是您可以自由選擇兩種布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM