在我的應用程序中,我總是最終實現一個模型 - 視圖 - 演示者模式,並通常最終從屏幕上用get屬性報廢我的視圖對象。更好的方法來處理屏幕刮對象
例如
Person IBasicRegistration.Person
{
get
{
if (ViewState["View.Person"] == null)
ViewState["View.Person"] = new Person();
var Person = (Person) ViewState["View.Person"];
Person.Email = txtEmail.Text.Trim();
Person.FirstName = txtFirstName.Text.Trim();
Person.LastName = txtLastName.Text.Trim();
Person.Zip = txtZip.Text.Trim();
Person.Phone = txtPhone.Text.Trim();
Person.ResidentPersonLicenseState =
EnumerationParser.Parse<States?>(ddState.SelectedValue);
return Person;
}
}
調試時我在演示/型號,我得到我的get {}財產的相當多的遍歷訪問IBasicRegistration.Person我注意到在
不過。
我開始認爲這種模式看起來與INotifyPropertyChanged模式非常相似,我開始考慮實現一個類似的模式,並讓每個文本字段實現一個OnChanged事件,以更新它在位於視圖狀態的person對象中的相關值然而,我進一步想到,每次有人在某個領域內嘲諷時,都需要大量的服務器請求,並且似乎在某些時候會導致可伸縮性問題。
我的下一個想法它只是有意義創建IsDirty標誌,並纏上了我的代碼,其中倒是類似領域:
Person IBasicRegistration.Person
{
get
{
if (ViewState["View.Person"] == null)
ViewState["View.Person"] = new Person();
var Person = (Person) ViewState["View.Person"];
if(IsDirty)
{
Person.Email = txtEmail.Text.Trim();
...others
IsDirty = false;
}
return Person;
}
}
而且在調用回發的任何方法,設置(即通常只是提交按鈕)來設置IsDirty = true,然後它將無緣無故地重複許多工作。
有沒有人想出一些更優雅的任務?
我會說你的概念是相當深思熟慮的。如果它已經實施並正在工作,那麼也許你應該堅持下去。當然,除非有人提出真正優雅和容易實施的東西。 – 2009-10-12 15:18:11
「scrap」與「scrape」是不同的詞,「scrapping」與「scraping」是不同的詞。 – endolith 2009-10-16 14:03:53
非常有見地的評論先生納粹語法。 – 2009-10-16 16:45:31