更改路由的默认参数名称

时间:2012-10-12 14:45:35

标签: asp.net-mvc asp.net-mvc-3 routing

我曾经保留默认路由,但是冲突导致我将默认参数id更改为paramid

通常,我在视图中使用这样的代码:

@Url.Action("Edit", "Suivis", new {o.ID})

这在控制器中:

public ActionResult Edit(int id) { ... }

但它不再起作用,它迫使我使用:

@Url.Action("Edit", "Suivis", new {paramid = o.ID})

这是我的控制器中的代码:

public ActionResult Edit(int paramidid) { ... }

我的问题是:为什么我现在必须在视图中指定参数名称?

1 个答案:

答案 0 :(得分:1)

在原始行动中:

@Url.Action("Edit", "Suivis", new {o.ID})

正在使用相同的名称(ID)创建匿名类型。因为你必须改变路径期望从ID的参数到paramid - 当你试图传入o.ID(转换为新的{ID = o.ID})时,路由不匹配,因为它是寻找灵感。

如果是视图模型,则可以将属性更改为paramid -

@Url.Action("Edit", "Suivis", new {o.paramid})

它会再次起作用 - 但这可能比它的价值更麻烦。