我需要在部分页面中呈现列表数据...我有一个存储过程,负责获取菜单列表并在视图中具有主布局页面 - >共享文件夹 - >现在我在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; }
}
@Html.Partial("_DisplayFunctionList_Partial")
@model IEnumerable<DatabaseLayer.StoreProcedures.StoreProceduresMapping.GetAllFunction_SP_Map>
@foreach(var item in Model)
{
@item.ParentName
}
答案 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的模型中包含列表,然后适当地传递它。