[英]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.