如果我想为所有页面添加常用功能,我创建一个BasePage并从中驱动所有ASPX页面,那么如何在MVC中对Pageviews和Controllers进行操作?
答案 0 :(得分:2)
对于控制器,您只需从System.Web.Mvc.Controller
继承并添加自定义功能:
public class MyController : System.Web.Mvc.Controller
{
public MyController() : base()
{
ViewData["someDataInMasterPage"] = "Hello World!";
}
}
如果您有一个主页面会尝试使用上面的键检索一些ViewData,那么如果它们的控制器将从MyController继承,它将使您可以在所有视图中访问它。
您可以从ViewPage继承以定义自定义功能。例如,请参阅此SO问题:Extending WebFormView in MVC
答案 1 :(得分:2)
对于视图(您调用它们的“网页浏览量”),您可能不会有太多的数据/行为要在基类中进行分组,但您仍然可以。您将定义一个继承自System.Web.UI.Page的类,并将所有常用逻辑放在那里。 然后在你的代码后面的视图文件中(在ASP.NET MVC 1.0中,视图文件BY DEFAULT后面没有代码,但是you can create it)继承了这个公共类的视图类。
对于控制器,您可以创建一个从System.Web.Mvc.Controller中运行的类,并将所有常见内容放入其中。然后从此类派生所有控制器类。对namings,名称空间和文件位置没有限制。
答案 2 :(得分:1)
如果您希望所有视图共享同一个脚本,请使用包含所有脚本功能的母版页并在其中放置占位符:
<asp:ContentPlaceHolder ID="MainContent" runat="server" />
然后每个子视图都引用母版页。
<%@ Page Title="" Language="C#" MasterPageFile="Site.Master"
Inherits="OpenProjects.Web.Mvc.ApplicationView %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
</asp:Content>
对于控制器,创建您自己的应用程序控制器,该控制器继承自构建的MVC控制器,然后让您的控制器继承而不仅仅是Controller