Asp.net mvc 在asp.net mvc actionlink中传递嵌套属性
我的操作接受的模型如下所示:Asp.net mvc 在asp.net mvc actionlink中传递嵌套属性,asp.net-mvc,asp.net-mvc-3,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 ClassFil
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);
}
正如您所看到的,
过滤器
不能在这里使用。理论上,您可以这样构建它:
<a href="@Url.Action("Details", "Classes")?Filter.TermId=@Model.TermId&Filter.SubFormId=@subForm.SubFormId">go</a>
诸如此类;本质上,将查询字符串嵌入到客户机标记中,并只插入参数。我最终这样做了,我希望有更好的方法来实现这一点,也许可以使用属性字典,而不是匿名类。匿名类不能以这种方式支持点表示法(如Filter.TermId)。字典可以使用新字典{“Filter.TermId”,Model.TermId}。你可以试试。
<a href="@Url.Action("Details", "Classes")?Filter.TermId=@Model.TermId&Filter.SubFormId=@subForm.SubFormId">go</a>