繁体   English   中英

通过局部视图传递模型

[英]Passing a model with a Partial View

我想在某些表单上显示视图,该视图显示从数据库表读取的警报列表。 我认为我需要使用部分视图-但尚未使用过。

到目前为止,我在共享视图文件夹“ _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个控制器是否会调用以获取我的警报并进行格式化?

似乎有很多重复。

它们不必重复。

您可以在控制器内定义所需​​的操作,然后调用@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")

如果您拥有传递给partial所需的所有数据,则可以使用@ Html.Partial并传递模型。

另一方面,如果您希望嵌入的视图获取数据本身,则可以使用Html.RenderAction

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM