Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递带有局部视图的模型_C#_Asp.net Mvc_Partial Views - Fatal编程技术网

C# 传递带有局部视图的模型

C# 传递带有局部视图的模型,c#,asp.net-mvc,partial-views,C#,Asp.net Mvc,Partial Views,我想在一些表单上显示一个视图,其中显示从数据库表读取的警报列表。我想我需要使用局部视图,但还没有使用 到目前为止,我在共享视图文件夹中创建了一个名为“_Alerts.cshtml”的局部视图 在该文件中,目前,我只是: @{ Layout = null; } This is a shared view. 这只是我想展示一些东西 然后,在我要显示警报的现有页面上,我有以下代码部分: @if (User.Identity.IsAuthenticated) { <div cl

我想在一些表单上显示一个视图,其中显示从数据库表读取的警报列表。我想我需要使用局部视图,但还没有使用

到目前为止,我在共享视图文件夹中创建了一个名为“_Alerts.cshtml”的局部视图

在该文件中,目前,我只是:

@{
    Layout = null;
}

This is a shared view.
这只是我想展示一些东西

然后,在我要显示警报的现有页面上,我有以下代码部分:

@if (User.Identity.IsAuthenticated)
{
    <div class="row">
        @Html.Partial("~/Views/Shared/_Alerts.cshtml", null)
    </div>
}
@if(User.Identity.IsAuthenticated)
{
@Html.Partial(“~/Views/Shared/\u Alerts.cshtml”,null)
}
这很有效。但是,我的理解是不对的。目前,我没有向它传递任何模型。局部视图是否没有控制器?目前,我需要在某个地方创建一个控制器方法,从我的数据服务中获取一个警报列表,然后我想格式化它并在局部视图中显示它。但是我不确定控制器的方法去了哪里。如果从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

确定,谢谢。为了确保我理解……我会了解我目前的部分观点。。。。创建一个名为AlertsController的控制器。。。创建获取数据的方法。。。然后从该控制器方法创建一个(部分?)视图,然后我可以在任何地方使用@Html.Action(“MyMethod”、“Alerts”)?@Craig呈现它,这差不多就是它。不过,你不必放弃当前的局部视图。您会注意到我引用了它,因为它位于共享文件夹中,所以实际上没有必要放置完整的虚拟路径。