C# 传递带有局部视图的模型
我想在一些表单上显示一个视图,其中显示从数据库表读取的警报列表。我想我需要使用局部视图,但还没有使用 到目前为止,我在共享视图文件夹中创建了一个名为“_Alerts.cshtml”的局部视图 在该文件中,目前,我只是: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
@{
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呈现它,这差不多就是它。不过,你不必放弃当前的局部视图。您会注意到我引用了它,因为它位于共享文件夹中,所以实际上没有必要放置完整的虚拟路径。