Может ли кто-нибудь помочь мне с предметом? Я использую механизм просмотра Razor, и мне нужно передать некоторые данные в _Layout. Как я могу это сделать?
ASP.NET MVC 3 _Layout.cshtml Контроллер
Ответ 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.
Если вы хотите, я могу дать вам дополнительную информацию об этом...