C# 是否可以在mvc5中动态检索和显示视图名称?
嗨,我想动态显示视图名称。我会详细解释我的问题 我动态地将菜单带入布局页面。现在我想要的是我在菜单列表中单击的任何名称,它将重定向到该控制器 布局页面中的动态菜单,例如格式 1) 会计主管 1.1)账户 1.2)账户类别 现在,如果我单击accounts,它将转到accounts controller。同时,我想在控制器中获取视图名称Accounts。然后使用会话,我可以将名称从传递到视图,传递到控制器。任何人都可以告诉我如何通过菜单布局页面中的选定值获得视图名称。可能吗?在windows中我看到了这种方法,但在mvc中我很难做到这一点 我的型号C# 是否可以在mvc5中动态检索和显示视图名称?,c#,asp.net-mvc,C#,Asp.net Mvc,嗨,我想动态显示视图名称。我会详细解释我的问题 我动态地将菜单带入布局页面。现在我想要的是我在菜单列表中单击的任何名称,它将重定向到该控制器 布局页面中的动态菜单,例如格式 1) 会计主管 1.1)账户 1.2)账户类别 现在,如果我单击accounts,它将转到accounts controller。同时,我想在控制器中获取视图名称Accounts。然后使用会话,我可以将名称从传递到视图,传递到控制器。任何人都可以告诉我如何通过菜单布局页面中的选定值获得视图名称。可能吗?在windows中我看
public class Menu
{
public Menu()
{
MenuItems = new List<MenuItem>();
SubMenuItems = new List<SubMenuviewmodel>();
}
public int Id { get; set; }
public string Name { get; set; }
public List<MenuItem> MenuItems { get; set; }
public List<SubMenuviewmodel> SubMenuItems { get; set; }
}
public class SubMenuviewmodel
{
public string SubMenu { get; set; }
public string ActionName { get; set; }
public string MainMenuName { get; set; }
public string ControllerName { get; set; }
public string subid { get; set; }
}
菜单模式
public class Menu
{
public Menu()
{
MenuItems = new List<MenuItem>();
SubMenuItems = new List<SubMenuviewmodel>();
}
public int Id { get; set; }
public string Name { get; set; }
public List<MenuItem> MenuItems { get; set; }
public List<SubMenuviewmodel> SubMenuItems { get; set; }
}
public class SubMenuviewmodel
{
public string SubMenu { get; set; }
public string ActionName { get; set; }
public string MainMenuName { get; set; }
public string ControllerName { get; set; }
public string subid { get; set; }
}
菜单项
public class MenuItem
{
public int Id { get; set; }
public int UserName { get; set; }
public string Name { get; set; }
public string ActionName { get; set; }
public string ControllerName { get; set; }
public string Url { get; set; }
public Menu ParentMenu { get; set; }
}
我的控制器(菜单控制器)
public ActionResult子菜单()
{
变量菜单=新菜单();
var main menu=db.ApplicationNames.Select(e=>new
{
uid=e.uid,
mainmenuname=e.ApplicationName1
}).ToList();
var menuitemlist=新列表();
对于(var item=0;itemnew
{
subnumuid=e.subapplicationnameid,
子菜单名=e.子菜单名,
子菜单parentId=e.ApplicationID,
mainmenuame=e.ApplicationName
}).ToList();
var subnumlist=新列表();
对于(var item=0;item
我的观点
@model DynamicMenuLoading.Models.Menu
@{
Layout = null;
}
@foreach (var MainMenu in Model.MenuItems)
{
<a href="#">
<span>@MainMenu.Name</span>
</a>
<ul class="nav nav-second-level collapse">
@foreach (var SubMenu in Model.SubMenuItems.Where(x => x.subid == MainMenu.Id.ToString()))
{
<ul>
<li><a href="@Url.Action(SubMenu.ActionName, SubMenu.ControllerName)"><i class="fa fa-circle-o"></i>@SubMenu.SubMenu</a>
//tried @Session["Name"]=@SubMenu.SubMenu;
</li>
</ul>
}
</ul>
}
public ActionResult Index()
{
var viewname =Session["Name"];
}
@model DynamicMenuLoading.Models.Menu
@{
布局=空;
}
@foreach(Model.MenuItems中的var主菜单)
{
@foreach(Model.subnumitems.Where(x=>x.subid==main menu.Id.ToString())中的var子菜单)
{
-
//已尝试@Session[“Name”]=@SubMenu.SubMenu;
}
}
公共行动结果索引()
{
var viewname=会话[“名称”];
}
这里,此代码用于在布局页面中动态加载菜单。现在,我想将我选择的视图名称传递给控制器。我试图使用会话。即获取名称为session并尝试传递给控制器。但它失败了。失败的意思是它在控制器中给出空值,在视图中给出错误的输出。任何人都知道我的问题,并帮助我解决这个问题
提前感谢。您可以通过在url中传递一个附加参数来实现这一点,如
href="@Url.Action(SubMenu.ActionName, SubMenu.ControllerName , new {Title=SubMenu.SubMenu})"
在你的行动中,你可以得到标题
public ActionResult Accounts(string Title)
{
// your code here
}
使用此方法我们也可以使用相同的方法传递ID Right您能告诉我如何从控制器传递此Viewname以查看并在视图中显示吗?使用
ViewBag.Title=Title
和view@ViewBag.Title
是的,我还尝试使用session,它更好ViewBag它sessionViewBag更好,因为您将只在view中使用此值,而不是在其他任何地方