2009-01-17 113 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母版页?我不熟悉框架中包含的任何内容...