我是一名实习生,致力于改善网站的生活质量。没有什么必要的,但由于这实际上将被部署,我想保持整洁。
我需要从数据库中提取表格,并将其显示在网站的共享标题中。我已经设置了数据库,模型从数据库中获取数据,以及测试视图,看它是否正确显示。然而,该模型正由页面控制器通过viewbag传递,我被告知不要这样做。
那么,如何让我的页面打印出模型数据而不通过视图包呢?
答案 0 :(得分:2)
您可以使用此格式
public ActionResult Index(YourModelHere model)
{
return View(model);
}
在您看来,添加此
@model yournamespacehere.Models.YourModelHere
为部分视图数据创建新控制器
//partial view call
public ActionResult GetHeaderPartial()
{
var model = new DataModel();
model.data1 = "Menu 1";
model.data2 = "Menu 2";
return PartialView("_HeaderPartial", model);
}
为共享标头创建部分视图。在这个例子中,我将其命名为“_HeaderPartial”
@model yournamespace.Models.DataModel
<li><a href="#">@Model.data1</a></li>
<li><a href="#">@Model.data2</a></li>
在您的共享标题布局中,添加@ Html.Action(“GetHeaderPartial”,“ControllerHere”)
<header>
<div class="content-wrapper">
<div class="float-left">
<p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
</div>
<div class="float-right">
<section id="login">
@Html.Partial("_LoginPartial")
</section>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
@Html.Action("GetHeaderPartial","Sample")
</nav>
</div>
</div>
</header>
答案 1 :(得分:0)
Here's一个好的起点。正如文章所述,基本上有三种方法可以将数据传递给视图:
使用后一种方法(通常是一个好主意),您只需将模型实例传递给您正在返回的ActionResult(在您的情况下,这将是一个ViewResult实例)。
所以不要这样......
delay_while_idle
你这样做......
public ActionResult Index()
{
ViewBag.Foo= new Foo();
return View();
}
确保您在索引视图中的模型具有以下行:
public ActionResult Index()
{
return View(new Foo());
}
现在,您可以使用Razor或您正在使用的任何语法来执行您在视图中需要执行的操作。
答案 2 :(得分:0)
设置在控制器中创建并传递给视图的视图模型。这个link会对你有所帮助!