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

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -