Asp.net mvc 将模型添加到@url.action

Asp.net mvc 将模型添加到@url.action,asp.net-mvc,razor,asp.net-mvc-5,Asp.net Mvc,Razor,Asp.net Mvc 5,我有一个模型: public class Menu { public Menu MenuEntity {get;set;} public List<Menu> MenuList {get;set;} public int MenuId {get;set;} public int? ParentId{get;set;} public string Title{get;set;} public string Description{get;

我有一个模型:

public class Menu
{
    public Menu MenuEntity {get;set;}
    public List<Menu> MenuList {get;set;}
    public int MenuId {get;set;}
    public int? ParentId{get;set;}
    public string Title{get;set;}
    public string Description{get;set;}
    public string Levelstate{get;set;}
    public string Controller { get; set; }
    public string Action { get; set; }
}
公共类菜单
{
公共菜单有效性{get;set;}
公共列表菜单列表{get;set;}
public int MenuId{get;set;}
public int?ParentId{get;set;}
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串Levelstate{get;set;}
公共字符串控制器{get;set;}
公共字符串操作{get;set;}
}
鉴于此,我正在使用@Url.Action,如下所示

<a href ='@Url.Action("GetCustomer", "Customer")'>@citem.Title</a>

我想用模型值更改@Url.Action中指定的操作和控制器,如下所示:

<a href ='@Url.Action(m => m.Action, m => m.Controller)'>@citem.Title</a>

方法
Url.Action()
只接受字符串作为参数,而不是表达式

你可以用

@foreach(var citem in Model) {
  <a href ='@Url.Action(citem.Action, citem.Controller)'>@citem.Title</a>
}

您不能在
@Url.Action()
方法中使用表达式,但可以使用
@Url.Action(Model.Action,Model.Controller)
-或者它可能是
citem.Action
,如果它在循环中?@StephenMuecke是否有任何方法使用Html.ActionLink?@StephenMuecke甚至@Url.Action(Model.Action,Model.Controller)都不起作用。在模型之后。只有方法。
@Html.ActionLink(citem.Title,citem.Action,citem.Controller)
(我正在使用类似于
foreach(var citm in Model){
)的方法。
Model.Action,Model.Controller
如果您的模型是
IEnumerable
,我猜它是这样的话,它就不起作用了(需要是
citem.Action,citem.Controller
@Html.ActionLink(citem.Title, citem.Action, citem.Controller)