2011-03-20 139 views
0

嗨,MVC和强类型视图路由?

说我有一个操作返回到强类型视图。这种类型也是行动的参数。要设置当前页码(对于页面上的列表),我需要设置Model.ALS.P(我们的强类型)。

向服务器发送请求时,quarystring myComputer.com/MyController/MyAction?ALS.P=2会将传入对象上的ALS.P设置为2。

如果我想将其转换为以下URL:myComputer.com/MyController/MyAction/2路线将如何显示?

我已经试过这样:

routes.MapRoute(
       "List", // Route name 
       "{controller}/{action}/{ALS_P}", // URL with parameters 
       new { controller = "Ad", action = "List", ALS_P = 0 } // Parameter defaults 
      ); 

但是,这并不工作,它不会接受ALS.P作为参数名称。

BestRegards

回答

1

你知道你定义路线是一样的在asp.net mvc的默认路由?这意味着,如果你没有删除默认的路由定义,你永远不会被打。

您应该保留默认路由,并创建一个自定义模型绑定器,将id路由参数绑定到模型的相应属性。有关更多详细信息,请参阅this question

否则,还有routedebugger(可从nuget获得),它可以让您更深入地了解您的路线以及它们如何(何时)被击中。

+0

好吧,让ALS_P/ID绑定到我的Model.ALS.P我必须扩展DefaultModelBinder? – Banshee 2011-03-20 15:35:46

+0

您必须创建一个自定义的ModelBinder。这可以通过从DefaultModelBinder得到yes来完成,并且在这种情况下推荐使用,但这并不是必须的,因为您也可以实现IModelBinder接口,但是您必须做更多的工作。 – fretje 2011-03-20 16:11:56