我正在研究ASP.NET MVC预览2天期间生成的应用程序。这是很脏的地方,我试图清理它。我试图克服的一个问题是过于冗长的代码。如何在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参数集合中。
我已经考虑过这个问题了,但是希望将问题放在开放式的地方,而不是人为地指导特定方向的答案。我意识到可以在路由定义中设置默认值,但是我想设置每个操作的默认值,而不必创建十亿条路线。
您必须继承ControllerActionInvoker并重写GetParameterValue()方法。有一个公开的请求为[DefaultValue]添加对下一个版本的框架的支持,但是没有人能够做出任何承诺,确定它是否会被实现。 – Levi 2009-06-16 18:16:38