0

行タイプのプロパティを指定してソートできるようにしたいデータのテーブルを表示するビューがあります。

私のモデル(これまでのところ)は次のとおりです。

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();
    ...
}
4

1 に答える 1

1

私の知る限り、複雑なオブジェクトを URL 経由で渡すことはできません。たとえば、プロパティの名前で文字列を渡すことができます。ただし、テーブルを並べ替えるだけの場合は、この問題に対する別のアプローチを検討する必要があります。このhttp://www.kryogenix.org/code/browser/sorttable/を確認してください。ヘッダーをクリックするだけで、テーブルを簡単に並べ替えることができます。

于 2013-08-28T09:57:05.667 に答える