在没有视图包的情况下获取模型数据

本文关键字:情况下 获取 模型 数据 视图 | 更新日期: 2023-09-27 17:56:00

我是一名实习生,致力于为一个网站改进生活质量。没有什么必要的,但由于这实际上将被部署,我想保持整洁。

我需要从数据库中提取一个表,并将其显示在站点的共享标头中。我已经设置了数据库,模型从数据库中获取数据,以及一个测试视图,只是为了查看它是否正确显示。但是,页面控制器正在通过视图包传递模型,我被告知不要这样做。

那么,如何让我的页面打印出我的模型数据而不通过 viewbag?

在没有视图包的情况下获取模型数据

您可以使用此格式执行此操作

    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>

这是一个很好的起点。如文章所述,基本上有三种方法可以将数据传递到视图:

  • 视袋
  • 动态对象
  • 强类型对象

使用后一种方法(通常是个好主意),您只需将模型实例传递给要返回的 ActionResult(在您的情况下,这将是一个 ViewResult 实例)。

所以取而代之的是这个....

public ActionResult Index() 
{ 
   ViewBag.Foo= new Foo();
   return View();
}

你这样做...

 public ActionResult Index() 
 {
    return View(new Foo());
 }

确保"索引"视图中的模型具有以下行:

@model Foo

现在,您可以使用 Razor 或您正在使用的任何语法来执行视图中需要执行的操作。

设置在控制器中创建并传递给视图的视图模型。此链接将为您提供帮助!