2016-12-23 29 views
3
<a href="@Url.Action("UpdateCase", "Receptionist", new { id = @Model[SrNo].Patient_ID })" class="btn btn-danger">Edit</a> 

在href中,我通過了id作爲參數。所以當我重定向到行動我有以下網址在MVC中的URL中顯示「ID」字

http://localhost:17888/Receptionist/UpdateCase/12

但我想ID字在URL中可見。

http://localhost:17888/Receptionist/UpdateCase?id=12

RouteConfig

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 

如果我改變參數的名稱,而不是ID,這是工作。唯一ID是不是在URL可見

UpdateCase行動:當在URL中未指定參數

[Authorize] 
[HttpGet] 
public ActionResult UpdateCase(Int64 id) 
{ 

} 
+0

嘗試添加屬性[路線(「{}動作/ ID = {0}」)],以行動接待員 – Marusyk

+0

Edit它應該是這樣的? –

+0

不,它將作爲控制器中的動作的一個屬性 – Marusyk

回答

2

其中一個可行的辦法是改變你的路線config來

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{param}", 
    defaults: new { controller = "Home", action = "Index", param = UrlParameter.Optional } 
); 

在這種情況下,你不會有名字id參數在路由表中,所以Url.Action不能使用它,因此你會得到預期的網址。

但要小心,並檢查其他行動

+0

所以我們改變了從id到param的默認參數。有用! –

+0

是的,檢查是否不破其他情況。很高興能有幫助 – Marusyk

+1

是的,我會檢查它。我剛剛開始我的項目,所以我不認爲將來會有問題 –

0

問號加,所以去除{id}從添加你的路線將迫使問號在URL中。

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
+0

當我從路由中刪除ID時,重定向停止工作,按鈕單擊時不發生任何事情。 –

+0

你如何生成鏈接,你可以添加代碼到你的問題? –

+0

'@ Html.ActionLink(「Click me」,「About」,「Home」,new {id = 5},null)'這對我有用嗎? –