Как связать viewMasterPage с контроллером - PullRequest
0 голосов
/ 03 апреля 2011

Я новичок в MVC и сталкиваюсь с проблемой, как я могу подключить контроллер "HelloWorld" к viewMasterPage "Index" .. и если я хочу, чтобы все мои страницы содержали компоненты, мне нужно использовать viewMasterPage для всехПросмотры??

Редактировать Я использую MVC3 и Razor в качестве движка просмотра

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Сделай так.Я предполагаю, что вы используете механизм просмотра веб-форм.

вашей главной страницей является файл site.aspx внутри вашей папки Views / Shared.вот ваш индексный файл в папке 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 внутри папки controllers;

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();
        }

    }
}

EDIT: Вот версия бритвы;

Ваша главная страница - это _layout.cshtml файл в вашей папке Views / Shared.вот ваш файл index.cshtml внутри папки Views / HelloWorld.

@{
    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.применение

0 голосов
/ 03 апреля 2011

Главные страницы работают как файлы шаблонов, большинство частей статические, и вам нужно всего лишь изменить несколько мест, чтобы показать желаемый результат.Изменяющиеся части, которые различны для разных страниц представления, динамически генерируются механизмом представления.Действие генерации динамического содержимого называется «Render».

При использовании 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>
}

. Дополнительный сценарий, добавленный для этой страницы макрочастиц, будет отображаться во время выполнения на странице результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...