我想在我的一些表单上显示一个视图,其中显示了从数据库表中读取的警报列表。我想我需要使用局部视图 - 但是没有使用过。
到目前为止,我在共享的视图文件夹中创建了一个名为" _Alerts.cshtml"的部分视图。
在该文件中,目前我只是:
@{
Layout = null;
}
This is a shared view.
这只是我试图展示的东西。
然后,在我想要显示警报的现有页面上,我有这段代码:
@if (User.Identity.IsAuthenticated)
{
<div class="row">
@Html.Partial("~/Views/Shared/_Alerts.cshtml", null)
</div>
}
这很有效。但是,我的理解是不对的。目前,我没有传递任何模型。部分视图没有控制器吗?目前,我需要创建一个控制器方法 - 在某个地方 - 从我的数据服务中获取警报列表,然后我想格式化并在局部视图中显示它。但我不确定控制器方法在哪里。如果从8个不同的屏幕调用此视图,这些屏幕的8个控制器是否会调用我的警报并格式化它们?
似乎有很多重复。
答案 0 :(得分:1)
他们不需要重复。
您可以在控制器中定义所需的操作,然后拨打@Html.Action
而不是@Html.Partial
在您的操作中,您可以返回部分视图。
public class AlertsController : Controller
{
public ActionResult Show()
{
var model = GetModel();//decide where this will come from.
return PartialView("~/Views/Shared/_Alerts.cshtml",model);
}
}
在布局视图中或您需要使用它的任何位置。你可以简单地称它如下。
@Html.Action("Show","Alerts")
答案 1 :(得分:1)
如果您需要将所有数据传递给partial,那么您可以使用@ Html.Partial并传入模型。
另一方面,如果您想要嵌入的视图来获取数据本身,那么您将使用Html.RenderAction