如何将viewMasterPage与控制器链接

时间:2011-04-02 21:48:54

标签: asp.net-mvc asp.net-mvc-3 c#-4.0 razor

我是MVC的新手,我遇到了一个问题,如何将控制器“HelloWorld”连接到viewMasterPage“Index”..如果我希望我的所有页面都包含组件,我需要使用viewMasterPage为所有意见?

修改 我正在使用MVC3和Razor作为视图引擎

2 个答案:

答案 0 :(得分:1)

这样做。我假设您正在使用Web表单视图引擎。

您的母版页是Views / Shared文件夹中的site.aspx文件。这是Views / HelloWorld文件夹中的索引文件。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Bla bla bla..
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Index of HelloWord</h2>
    <%:ViewData["Message"]%>

</asp:Content>

这是控制器文件夹中的HelloWorldController.cs文件应该是什么样的;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace App.Controllers {

    public class HelloWorldController : Controller {

        public ActionResult Index() {

            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

    }
}

编辑:以下是此版本的剃刀版本;

您的母版页是Views / Shared文件夹中的_layout.cshtml文件。这是Views / HelloWorld文件夹中的index.cshtml文件。

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<p>
     @ViewBag.Message
</p>

这里是_ViewStart.cshtml文件在Views文件夹中的样子;

@{
    Layout = "~/Views/Shared/_Layout.cshtml";

}

这是控制器文件夹中的HelloWorldController.cs文件应该是什么样的;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace App.Controllers {

    public class HelloWorldController : Controller {

        public ActionResult Index() {

            ViewBag.Message = "Welcome to ASP.NET MVC!";

            return View();
        }

    }
}

注意:我假设您的路线是Visual Studio在您创建新的MVC互联网应用程序时为您创建的默认路线

答案 1 :(得分:0)

母版页的工作方式与模板文件类似,大多数部分都是静态的,您只需更改几个地方即可显示所需的结果。不同视图页面的不同变化部分由视图引擎动态生成。生成动态内容的动作称为“渲染”。

使用Razor View Engine时,您需要确定哪些部分是静态的以及哪些部分正在发生变化。对于变化的部分,除了魔术召唤之外你不会写任何东西@RenderBody() 对于在某些视图中需要但在其他视图中不需要的部件。您使用@RenderSection("sectionName", false)

这是一个示例_layout.cshtml文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   ... your style sheet files ... 
</head>

<body>
     ... shared components...     
    @RenderBody()
     ...I like to put the java script files to the end...     
    @RenderSection("extraScripts", required: false)
</body>
</html>

然后在每个共享相同组件的视图中添加

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

在文件的开头。您的视图文件的其余部分将被提取 @RenderBody()致电。如果要为视图添加一些自定义脚本,请按

添加另一个部分
@section extraScripts{
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">      </script>
}

您为此微粒页面添加的额外脚本将在运行时呈现到您的结果页面。

相关问题