2014-02-21 151 views
0

我開始學習ASP.NET MVC前幾天,我只是好奇MVC提供了什麼功能,只要更新視圖。我與WPF有很多經驗,它具有神奇的INotifyPropertyChanged界面,用於更新屬性綁定的UI組件。據我所知,沒有這樣的接口,我們可以在Model中實現,然後將更新View異步而不刷新頁面。最佳ASP.NET MVC異步更新模式

所以我的問題是,什麼是從模型更新視圖,而不必刷新頁面的最佳做法?我知道在傳統的ASP.NET中我們會使用AJAX來實現這一點,但我想知道MVC是否提供了一個更清晰,更「.NETy」的實現方式。

因此,例如在我的方案中,我有一個WebGrid綁定到模型中的列表,並且我有一個計時器,每隔幾秒刷新模型中的數據。推動這些變化的最佳方式是什麼? AJAX是唯一的選擇嗎?

回答

1

總之,要實現類似於你所描述的行爲需要某種類型的Ajax的行爲。控制器操作方法中引用的模型和UI之間的連接在每個請求/響應週期都會中斷,因此實時更新模型屬性不會像WPF中習慣的那樣發生。

最簡單的方法是使用AngularJS中的某些東西來創建SPA,並使用MVC的WebAPI功能來公開客戶端使用的API。這不會讓你立即獲得實時屬性更新,但一個好的框架將幫助你組織你的客戶端代碼,並避免頁面刷新,如果這是你的設計目標。

1

您可以在您的控制器上創建返回JsonResult的操作。通過ajax執行該操作並使用返回的數據更新您的客戶端。就像@ maf748建議的那樣,如果你的應用程序大部分應該以這種方式行事,我會研究web api。

我不知道更多的「.NETy」方式。如果你返回一個View,你將刷新頁面,所以你只需要返回ol'json或者xml,並在客戶端處理顯示更新。