mvc3 IModelBinder和url

时间:2012-02-09 06:15:12

标签: asp.net-mvc-3 model-binding imodelbinder

我在使用带有url的iModelBinder格式为

时遇到问题

http://localhost/controller/action/id/value

动作将是控制器中的功能 id /值是ie。 ID = 12

当我尝试上面的链接时,我收到一个404错误页面未找到,看着堆栈我可以理解MVC正在寻找一条它不理解的路径。

使用以下作品

http://localhost/controller/action?id=value

如果有人知道这个问题是否可以解决,我真的希望能够使用“/”作为分隔符。

文斯

1 个答案:

答案 0 :(得分:1)

网址应该采用以下格式:

http://localhost/controller/action/id

例如:

http://localhost/products/index/1

然后应在控制器操作中指定id。例如:

public ActionResult Index(int id)
{
    ...

global.asax文件中指定的路由将指定url的格式。对于上面的url,默认路由就足够了:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

然后默认的模型绑定器会自动将您的id(即上面的url中的1)绑定到操作中的int id。

就像Adam建议的那样,我认为你不应该在url中指定id的名称,因为默认的模型绑定器会自动为你绑定。