2014-07-04 2 views

ответ

0

Есть два способа реализации макет страницы:

В последнем случае вы можете отключить страницу макета для одной страницы, используя Layout = null в разделе кода.

Редактировать

Если вы хотите передать данные из главной страницы частичной страницы, вы должны использовать метод RenderPage() вместо метода RenderBody(), но и структуру сайта полностью меняется ,

Если, например, вы хотите создать мастер-страницу, которая извлекает данные из таблицы и передает их на частичную страницу, которая может измениться, ваша главная страница может быть что-то вроде:

@{ 
    var db = Database.Open("Northwind"); 
    var data = db.Query(@"SELECT [Product Id], [Product Name], 
      [English Name] FROM Products "); 
    var page = "Partial.cshtml"; 
} 

<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 
     @RenderPage(page, new {gridData = data}) 
    </body> 
</html> 

Кодекса в Partial.cshtml принимает данные из переменной Page.gridData и отображает их в WebGrid:

@{ 
    var grid = new WebGrid(Page.gridData); 
} 

<div>@grid.GetHtml()</div> 
+0

я использую первый способ, однако, C# код, который я делаю в моей странице макета, не реализована страницы, которые используют эту страницу макета для макета. Это то, что мне нужно сделать, но по какой-то причине просто нет. – Mikkel

+0

@ user3250722 Я неправильно понял ваш вопрос. Теперь я отредактировал свой ответ. – GmG

+0

Спасибо за ваш ответ, я надеялся, что простая страница макета также передаст код C# страницы макета на его страницы содержания, но, к сожалению, не тогда. В моем случае я проверяю, зарегистрирован ли пользователь на странице макета, поэтому мне не нужно делать то же самое для каждой страницы контента, и я думал, что это сработало, но, видимо, нет, хе-хе. Спасибо за ответ! – Mikkel

Смежные вопросы