日期:2014-05-16  浏览次数:20535 次

可不可以ASP.NET MVC所有参数均自动设置为默认

public class HomeController : Controller
{
    public ActionResult Index(int para1,string para2,int para3,bool para4,CustomClass para5)
    {
        return View();
    }
}

public class CustomClass
{

}

如上代码,如果想使用Home/Index路径路由到Index方法

方式1:从参数动手,设置可为null的参数比如int? para1,或者给参数默认值比如int para1 = 0,或者把简单参数合为一个复杂类型,这样就可以默认为null了。
方式2:从路由动手

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index", para1 = 0, para2 = 0, para3 = 0, para4 = 0 }
);


现在想问的是,有没有第三种方式,比如说配置一下哪里,或者有比较简约的解决方案。不用动最上面代码的参数,也不用为每一个想如此做的Action都单独配置路由,所有参数在请求时不传输的话均使用默认值。让Home/Index直接到Aciton方法。

虽然这样做的话可能会丧失一些特性(参数重载的Action什么的),但是还是想问一下
------解决方案--------------------
asp.net mvc 5可以有第三种方式
google attribute routing
------解决方案--------------------