我曾经保留默认路由,但是冲突导致我将默认参数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) { ... }
我的问题是:为什么我现在必须在视图中指定参数名称?
答案 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})
它会再次起作用 - 但这可能比它的价值更麻烦。