@{Html.RenderAction("RenderTopMenu", "Common");}
,我需要在此RenderAction中传递sessionStorage值例如:@{Html.RenderAction("RenderTopMenu", "Common", new {model=sessionStorage});}
PAGE - Index.csHtml
@{
ViewBag.Title = "Welcome To " + SessionManagement.CompanyName;
Layout = (ViewBag.isPartialView) ? null : "~/Views/Shared/_Layout.cshtml";
}
PAGE - _Layout.cshtml
<!DOCTYPE html>
<html>
<head>
</head>
<body class="pageContent">
@{Html.RenderAction("RenderTopMenu", "Common");}
</body>
PAGE - Controller
public ActionResult RenderTopMenu(DashboardViewModel AdminMenus)
{
DashboardViewModel Dashboardmodel = new DashboardViewModel();
Dashboardmodel = DashboardModel.GetTopMenu(Dashboardmodel);
}
PAGE - Model
public List<AdminMenus> GetMenuListFromCache(int AccountMode, DashboardViewModel Dashboardmodel)
{
List<AdminMenus> AdminMenusList = sessionStorage.getitem("Menu") as List<AdminMenus>;
if (AdminMenusList == null) //not in cache
{
AdminMenuParamsModel menus = new AdminMenuParamsModel()
{
CompanyID = SessionManagement.IntCompanyID,
MenuID = AccountMode
};
AdminMenusList = new DashboardBLL(SessionManagement.DevPasswordConnectionString).ProcessGetMenus(menus);
AdminMenusList = DashboardModel.SetMenuName(AdminMenusList);
sessionStorage.setitem("Menu") = AdminMenusList;
}
return AdminMenusList;
}
NOTE: In a model for only explanation purpose I put sessionStorage.getitem but really I can not use this.
在此行@ {Html.RenderAction(“ RenderTopMenu”,“ Common”,新的{model = sessionStorage});}您只需要使用
@@ Html.RenderAction(“ RenderTopMenu”,“ Common”,新的{model = sessionStorage.Menu});}要么@ {Html.RenderAction(“ RenderTopMenu”,“ Common”,新{model = sessionStorage.getitem(“ Menu”)});}理想情况下应该可以工作。
您无法从razor访问javascript值,我建议您使用jquery或javascript编码菜单,也可以将菜单对象保存在服务器端的会话中并将其传递到查看包中,然后使用剃须刀。
How to pass a value to razor variable from javascript variable?