ASP.NET MVC 3 _Layout.cshtml Контроллер

Может ли кто-нибудь помочь мне с предметом? Я использую механизм просмотра Razor, и мне нужно передать некоторые данные в _Layout. Как я могу это сделать?

Ответ 1

Как обычно, вы начинаете с создания модели представления, представляющей данные:

public class MyViewModel
{
    public string SomeData { get; set; }
}

затем контроллер, который будет извлекать данные откуда-то:

public class MyDataController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            SomeData = "some data"
        };
        return PartialView(model);
    }
}

затем соответствующий вид (~/Views/MyData/Index.cshtml) для представления данных:

@{
    Layout = null;
}
<h2>@Model.SomeData</h2>

и, наконец, внутри вашего _Layout.cshtml включить эти данные где-нибудь:

@Html.Action("index", "mydata")

Ответ 2

Вы можете использовать ViewBag для передачи данных.

В вашем контроллере:

ViewBag.LayoutModel = myData;

Доступ к вашему макету:

@ViewBag.LayoutModel

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

Ответ 3

Метод ViewBag является самым простым. Однако, если вам нужны расширенные и типизированные функции, вы также можете попробовать взять эту часть на частичный вид (часть, которая будет отображать зависимый раздел), с помощью общего контроллера (если значение может быть рассчитано на его собственное и не нужно ввод от других контроллеров), и вызовите RenderPartial на нем из _Layout.
Если вы хотите, я могу дать вам дополнительную информацию об этом...