尝试将数据列表从控制器传递到MVC中的部分视图

时间:2019-07-02 03:52:35

标签: asp.net-mvc

我正在尝试通过Viewbag将数据列表从控制器传递到部分视图,但出现错误

在提交表单后,通过HttPost从formcollection获取数据,并在操作完成后从其中返回主页,我在其中的“ loadmessage”方法中调用方法Page_Init,试图将列表返回到部分视图“ Header ”,但无法执行错误操作

家庭控制器 [HttpPost]

public ActionResult Login(FormCollection form)
{
 return View("Home");
}

在Home.cshtml中 在控制器中调用方法page_init

$.get("/Home/Page_Init",null, function (data) {
           alert(data);
       }); 

家庭控制器

 public ActionResult Page_Init()
    {
     loadMessages();
     return view("Home");
    }

public ActionResult loadMessages()
{
 List<MessageModel> lstMessages = new List<MessageModel>();
 List<MessageModel> lstInfoMessages = new List<MessageModel>();
lstInfoMessages = lstMessages.Where(msg => msg.MESSAGE_TYPE.Equals(CommonConstants.SAFETY_MESSAGE_INFO, StringComparison.InvariantCultureIgnoreCase)).ToList<MessageModel>();
if (lstInfoMessages.Count > 0)
{
 ViewBag.lstInfoMessages = 1;
 ViewBag.lstInfoMessages1 = lstInfoMessages;
 return PartialView("Header", lstInfoMessages);
}

}

还尝试从主视图转到部分视图

@ViewBag.lstInfoMessages1
@if (ViewBag.lstInfoMessages == 1)
{
    @Html.Partial("Header",ViewBag.lstInfoMessages1)
}  

预计信息列表应转到部分视图并绑定 错误:未获得确切的语法该怎么办以及如何执行上面尝试的步骤抛出错误

1 个答案:

答案 0 :(得分:1)

@Html.Partial方法不接受动态值-因此我们需要将其强制转换为实际类型。

@model MessageModel   //you need to give correct path of MessageModel
@ViewBag.lstInfoMessages1
@if (ViewBag.lstInfoMessages == 1)
{
    @Html.Partial("Header", (List<MessageModel>)ViewBag.lstInfoMessages1)
}

在页眉部分视图中,您可以使用@Model

检索列表