在asp.net mvc actionlink中传递嵌套属性

时间:2011-11-29 23:55:49

标签: asp.net-mvc asp.net-mvc-3

我的操作接受如下所示的模型:

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

1 个答案:

答案 0 :(得分:1)

理论上,你可以用这种方式构建它:

<a href="@Url.Action("Details", "Classes")?Filter.TermId=@Model.TermId&amp;Filter.SubFormId=@subForm.SubFormId">go</a>

这样的事情;实际上,将查询字符串嵌入到客户端标记中,并仅注入参数。