奇怪的MVC3控制器/动作行为

时间:2012-07-23 15:13:44

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

我的应用程序有以下设置:

routes.MapRoute("Default", 
                "{controller}/{action}/{idt}", 
                new { controller = "Home", 
                      action = "Index", 
                      idt = UrlParameter.Optional });

我在我的DB / Model中使用了整数的GUID,用于idt参数和主键。

我有,在我的应用程序的“主”菜单中:

@Html.ActionLink("Create invoice", "Create", "Invoices")

如果我启动应用程序并查看此链接指向的路径,那么它是正确的:/Invoices/Create

但是,由于此路径也用于编辑发票,如果我打开了一个路径为/Invoices/Create/0eb262cc-a623-41f5-9b32-fd452691f426的页面,然后查看“主”链接的路径,则指向{ {1}}。

那是什么意思? “固定”链接如何变化? 我不知道在代码中做了些什么吗?但即使我这样做,我也不明白为什么主链接会发生变化?它从哪里获取GUID的路径?

3 个答案:

答案 0 :(得分:1)

由于路径集合包含idt的值,它将使用该值呈现URL。

您只需将空白值传递给

即可
@Html.ActionLink("Create invoice", "Create", "Invoices",new {idt=""})

我相信这应该有助于解决问题。

答案 1 :(得分:1)

试试这个:

@Html.ActionLink("Create invoice", "Create", "Invoices", new {idt = ""}, new {})

这应解决长度= 8的问题。

答案 2 :(得分:0)

尝试this重载

@Html.ActionLink("Create invoice", "Create", "Invoices", null,null)