c# - How do I pass a property expression back to the controller? -
i have view displays table of data want able sort specifying property on row type.
my model (so far) is:
class model { list<datatype> data; expression<func<datatype, object>> sortproperty; }
i've tried creating in view passed controller follows:
<a href='<%= url.action("index", "approvals", new indexmodel() { page = model.page, sortproperty = ((approvalmodel m) => m.id)}) %>'>id</a>
which renders as:
<a href='/partslegislation/approvals.aspx/approvals?sortproperty=m%20%3d%3e%20convert(m.id)'>id</a>
so sort of looks it'll work (all-be-it convert
expression in there), in controller sortproperty
null
.
tl;dr: how can pass expression pointing property view controller?
edit: controller action below:
[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(); ... }
as far know can't pass complex objects via url. can pass example string name of property. if want sort table maybe should think approach problem. check http://www.kryogenix.org/code/browser/sorttable/ . allows sort table clicking on headers.
Comments
Post a Comment