我有一个视图,它显示了一个数据表,我希望能够通过在行类型上指定一个属性来对其进行排序。
我的模型(到目前为止)是:
class Model
{
List<DataType> data;
Expression<Func<DataType, object>> SortProperty;
}
我尝试在要传递到我的控制器的视图中创建它,如下所示:
<a href='<%= Url.Action("Index", "Approvals", new IndexModel() { Page = Model.Page, SortProperty = ((ApprovalModel m) => m.Id)}) %>'>Id</a>
呈现为:
<a href='/PartsLegislation/Approvals.aspx/Approvals?SortProperty=m%20%3D%3E%20Convert(m.Id)'>Id</a>
所以它看起来有点像它会工作(Convert
在那里有一个表达式),但是在控制器SortProperty
中总是null
.
TL;DR:如何将指向属性的表达式从我的视图传递给控制器?
编辑:我的控制器动作如下:
[HttpGet]
public ActionResult Index(Model viewModel)
{
....
viewModel.Approvals = PartsDC.Repository<Approval>()
.Where(a => !a.Deleted)
.OrderBy(viewModel.SortExpression)
.Skip((viewModel.Page ?? 0) * RowsPerPage)
.Take(RowsPerPage)
.Select(a => Mapper.Map<Approval, ApprovalHeaderModel>(a))
.ToList();
...
}