通嵌套属性的ActionLink

问题描述:

我的行动接受了一个模型,如下所示:通嵌套属性的ActionLink

public class ClassListVM 
{ 
    public ClassListVM() 
    { 
     Filter = new ClassFilterModel(); 
    } 

    public ClassFilterModel Filter { get; set; } 
    public PagedList<Class> Classes { get; set; } 
} 

public class ClassFilterModel 
{ 
    public int? TermId { get; set; } 
    public int? SubFormId { get; set; } 
    public int? FormId { get; set; } 
} 

public ActionResult Index(ClassListVM model) 
{ 
    model.Classes = classService.GetClasses(model.Filter); 
    return View(model); 
} 

现在我想产生这样的网址:/Classes?Filter.SubFormId=1。如何使用此代码得到Filter部分进入网址:

<a href="@Url.Action("Details", "Classes", new {Filter.TermId = Model.TermId, Filter.SubFormId = subForm.SubFormId})">go</a> 

正如你所看到的,Filter不能在这里使用。

从理论上说,你可以建立这样说:

<a href="@Url.Action("Details", "Classes")[email protected]&amp;[email protected]">go</a> 

类似的东西;基本上,将查询字符串嵌入到客户端标记中,并仅注入参数。

+0

我最终这样做,我希望有更好的方法来做到这一点,虽然 –

+5

也许使用字典的属性,而不是匿名类。匿名类不能支持点符号(如Filter.TermId中那样)。字典可以使用新的Dictionary {{“Filter.TermId”,Model.TermId}}。你可以试试。 –