2015-04-19 23 views
1

在ASP.NET MVC5中,如何使用Url.Action在Razor中生成標籤時隱藏Action名稱?正如標題所說:

我有一個路由設置和工作正常,它提供了一個默認的動作,當沒有指定。我只是想隱藏URL中的動作,因爲它不必要的混亂。

將「ActionName」參數設置爲null"",只會導致當前頁面的操作被替換 - 這不起作用。

我打算使用@Html.ActionLink()如果這將使我得到我所需要的。

我的路線定義爲

routes.MapRoute(
    name: "MyBookRoute", 
    url: "Book/{id}", 
    defaults: new { controller = "Book", action = "Index" } 
); 

如果一切都失敗了,我想我能對付手動編寫出的HREFs,但是這不應該成爲剃刀做一件很難的事情。

有沒有其他人遇到過這種情況,並知道該怎麼辦?

+1

顯示你的路由定義 –

+0

您好斯蒂芬, 我的路線如下: routes.MapRoute( \t名稱: 「MyBookRoute」, \t網址: 「書籍/(編號)」, \t默認:新{controller =「Book」,action =「Index」} ); – user2144556456456546

+0

因此,您使用'@ Url.Action(「Index」,「Book」)',那麼控制器名稱和操作名稱將被刪除。 –

回答

2

此基礎上你的路由定義,那麼無論

@Url.Action("Index", "Book", new { id = 1 }) 

@Html.ActionLink("Your link text", "Index", "Book", new { id = 1 }, null) 

將生成的URL刪除操作名稱。