2009-01-17 255 views

回答

16

大部分歸結爲默認控件和繼承。

AJAX Master和ASP.NET Master都從System.Web.UI.MasterPage繼承,而MVC Master從ViewMasterPage繼承。

顯然,這些給你稍微不同的控制 - 正如John Clayton所述,ViewMasterPage公開了Ajax/Html/Url助手等,這些對其他MasterPages不可用。

除此之外,默認的控制稍有不同:

  • ASP.NET母版頁都會有默認的表和兩個ContentPlaceHolder控件(一個在頭,一個在形式
  • AJAX。母版頁還增加了表格控件中ScriptManager控件
  • MVC碩士(取決於版本 - 我指的Beta版)。只會有兩個ContentPlaceHolder控件(在頭部和身體)

「生命週期差異」來自Page/ViewPage,而不是MasterPage/ViewMasterPage控件。

1

作爲一個快速猜測,我不得不說,答案將是「生命週期」。 ASP.NET WebForms,MVC和AJAX都有不同的生命週期,這些生命週期會影響主頁面控件需要響應的事件。一個WebForms母版頁需要對Load,DataBind,PreRender,Render等進行響應。一個MVC母版頁可能(不確定)只需要渲染操作。所有其他事件都是多餘的,並且可以在控制器中找到相應的代碼。最後,AJAX母版頁需要處理正常的AJAX請求。

正如我所說,這是一個有點猜測的那麼多研究建議

3

的ViewMasterPage在MVC比公開相同的助手作爲的ViewPage母版頁而已。這使您可以訪問AjaxHelper,HtmlHelper,TempDataDictionary,UrlHelper,ViewContext,ViewData和HtmlTextWriter。

與ViewPage一樣,當您使用WebFormsViewEngine(默認)時,您應該拒絕任何不惜代價地重載頁面生命週期事件的衝動!他們仍然在那裏,他們仍然會在ProcessRequest(...)之下運行,因爲ProcessRequest(...)仍然在頁面上調用。

您指的是哪個AJAX母版頁?我不熟悉框架中包含的任何內容...