私はASP.NET MVCのプレビュー2日間に誕生したアプリケーションで作業しています。場所はかなり汚れていて、私はそれをきれいにしようとしています。私が克服しようとしている問題の1つは、過度に冗長なコードです。ASP.NET MVCでアクションごとのパラメータのデフォルトを設定するにはどうすればよいですか?
たとえば、私は、これとまったく同じように見えるが、デフォルトのソートパラメータが異なるたくさんのメソッドがあります。ページおよびページサイズのデフォルト値は、アプリ全体で変更されません。今
public ActionResult List(int? page, int? pagesize, string sortby, string sortorder)
{
if (string.IsNullOrEmpty(sortby))
sortby = "ClientInvoiceNumber";
if (string.IsNullOrEmpty(sortorder))
sortorder = "desc";
page = page ?? 1;
pagesize = pagesize ?? 10;
...
return View();
}
理想的には、C#が、このようなものをサポートします:
public ActionResult List(int page = 1, int pagesize = 10, string sortby = "ClientInvoiceNumber", string sortorder = "desc")
をしかし、もちろん、これはそうではありません。
正確にASP.NET MVCでは、ルート単位ではなく、アクション単位でデフォルトパラメータを設定するコードを記述していますか?誰かがこの問題をきれいに解決したのですか、それとも私が気付いていないフレームワークに焼かれたものがありますか?可能であれば、デフォルトのパラメータをHttpRequestBaseパラメータコレクションに追加したいと思います。
私はこれについていくつか考えましたが、回答を人為的に特定の方向に誘導しないように自由に質問を残したいと思います。私はルート定義でデフォルトを設定できることを認識していますが、10億のルートを作成することなく、アクションごとのデフォルトを設定したいと思います。
ControllerActionInvokerをサブクラス化し、GetParameterValue()メソッドをオーバーライドする必要があります。 [DefaultValue]のサポートをフレームワークの次のバージョンに追加するというオープンな要求がありますが、実際に実装されるかどうかについては誰も約束できません。 – Levi