在ASP.NET MVC 5 </list>中的部分页面中渲染<list>数据

时间:2014-01-14 14:20:53

标签: asp.net-mvc razor partial-views

我需要在部分页面中呈现列表数据...我有一个存储过程,负责获取菜单列表并在视图中具有主布局页面 - &gt;共享文件夹 - &gt;现在我在masterLayout页面中渲染部分页面,但我没有得到任何结果。我知道部分页面不通过控制器,所以我将如何传递数据?

控制器操作

public ActionResult DisplayFunctionsList()
    {
       var myList = F_UOF.GetAllFunctions();

        return View(myList);
    }

存储过程映射(模型)类

  public class GetAllFunction_SP_Map
{
    public GetAllFunction_SP_Map() { }

    [Key]
    public int Hierarchy_ID { get; set; }

    [Required]
    public int ParentID { get; set; }

    [StringLength(250)]
    [Required]
    public string ParentName { get; set; }

    [Required]
    public int ChildID { get; set; }

    [StringLength(250)]
    [Required]
    public string ChildName { get; set; }

    [StringLength(250)]
    [Required]
    public string Controller { get; set; }

    [StringLength(250)]
    [Required]
    public string Action { get; set; }
}

MasterLayout Page

 @Html.Partial("_DisplayFunctionList_Partial")

部分页面(_DisplayFunctionList_Partial)

@model IEnumerable<DatabaseLayer.StoreProcedures.StoreProceduresMapping.GetAllFunction_SP_Map>

@foreach(var item in Model)
{
  @item.ParentName 
}

2 个答案:

答案 0 :(得分:4)

在此示例中,由于您是从母版页调用,因此您希望使用Html.RenderAction()方法。

@{Html.RenderAction("DisplayFunctionsList", "Controller");}

编辑 - Html.RenderAction必须用大括号括起来,并在函数调用结束时使用分号(';')。为避免这种情况,您可以使用@Html.Action调用,该调用将返回MvcHtmlString

@Html.Action("DisplayFunctionsList", "Controller")

此外,在使用此方法时,您需要稍微更改视图结果,因为您尝试呈现的视图不是您从中调用它的操作的名称,并且您似乎想要返回{{ 1}}

PartialViewResult

如果您在视图(不是母版页)中,则需要传递模型,假设模型的类型正确。如果局部视图的模型是整个视图模型的属性,则只需发送模型属性而不是整个模型。

public ActionResult DisplayFunctionsList()
    {
       var myList = F_UOF.GetAllFunctions();
        return PartialView("_DisplayFunctionList_Partial", myList);
    }

答案 1 :(得分:2)

@Html.Partial的调用需要第二个参数,即传递给局部视图的模型。您需要做的就是在View的模型中包含列表,然后适当地传递它。