通嵌套属性的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]&[email protected]">go</a>
类似的东西;基本上,将查询字符串嵌入到客户端标记中,并仅注入参数。
我最终这样做,我希望有更好的方法来做到这一点,虽然 –
也许使用字典的属性,而不是匿名类。匿名类不能支持点符号(如Filter.TermId中那样)。字典可以使用新的Dictionary {{“Filter.TermId”,Model.TermId}}。你可以试试。 –