在ASP.NET Web窗體,做用戶控件需要實現INotifyPropertyChanged
讓網頁模型結合上下文中使用它們正確,就像這樣:用戶控件是否需要實現INotifyPropertyChanged?
<uc1:MyControl runat="server" SomeProperty=<%# Item.Age%> ID="MC1" />
在ASP.NET Web窗體,做用戶控件需要實現INotifyPropertyChanged
讓網頁模型結合上下文中使用它們正確,就像這樣:用戶控件是否需要實現INotifyPropertyChanged?
<uc1:MyControl runat="server" SomeProperty=<%# Item.Age%> ID="MC1" />
不,他們不這樣做,他們需要從控制繼承或WebControl儘管據我所知。自從我編寫任何控件以來已經有一段時間了。
編輯:
結帳 http://msdn.microsoft.com/en-us/library/vstudio/zt27tfhy(v=vs.100).aspx
特別 http://msdn.microsoft.com/en-us/library/vstudio/4s70936s(v=vs.100).aspx
如果您使用對象瀏覽器在Visual Studio中,您可以看到現有的控件實現,例如文本框實現:
IEditableTextControl
IPostBackDataHandler
ITextControl
WebControl
和Web控件實現
Control
IAttributeAccessor
等等等等...並沒有在任何接口或基本類型包括INotifyPropertyChanged的。 如果你來自Windows Metro/Phone dev背景,那麼我可以看到你爲什麼會這樣想,因爲它在那裏被使用了很多。
希望這有助於
我肯定會說,他們是不是「被需要」,但是ComponentModel的INotifyPropertyChanged
是非常通用的,在ASP.NET Web窗體的用戶控件都可以使用。我認爲使用INotifyPropertyChanged
的最佳情況是,如果您不得不編寫一系列事件來讓您的用戶控制客戶端了解多個屬性何時更改。事件/模式比爲每個需要通知客戶端的屬性更改屬性要簡單得多。
所有這一切說,我主要看到INotifyPropertyChanged
在DataContexts中用於ORM的和在WPF中的綁定。這些似乎是這種模式更受歡迎的用法。我不認爲我見過ASP.NET Web Form控件使用INotifyPropertyChanged,但這並不是說它不會有用。
我大致發現ASP.NET Web Forms用戶控件所需的主要事件更多地來自用戶的反饋,例如「用戶單擊此按鈕」或「用戶進行了此選擇」。由於Web的性質和客戶端不得不「回發」他們的數據,ASP.NET Web Forms用戶控件的大多數客戶端都會檢查控件的每個屬性,只要控件引發「用戶做了某事「事件。
感謝您的意見。它加強了我的信念! :) – dotNET 2014-10-11 11:16:34
任何可以證實此聲明的參考? – dotNET 2014-10-10 14:41:52
這是一些寶貴的貢獻。謝謝。 – dotNET 2014-10-11 11:14:50