2014-10-28 65 views
1

我很確定我正在做一些非常愚蠢的事情。請看看,讓我知道我做錯了什麼。ActionLink不起作用

這裏是我的ActionLink

@Html.ActionLink("Edit","Edit","UserProfile", new { id = Model.ApplicationUserId },null) 

當我點擊這個則會引發錯誤的請求例外,我也注意到了網址是

https://localhost:44304/UserProfile/Edit/92b1347c-c9ec-4728-8dff-11bc9f935d0b 

https://localhost:44304/UserProfile/Edit?userId=92b1347c-c9ec-4728-8dff-11bc9f935d0b 

我有一個HTTPGET在我的控制器中編輯方法,它需要UserId。當我手動傳遞路由值時,它可以工作。請幫助我。 我們非常感謝您的幫助,並且總有一天會向您付款。 謝謝! 乾杯!

+0

安置自己的用戶配置控制器上的編輯操作方法的代碼。不知道你是否期望參數名稱是'id'或'userId',並且需要知道參數是什麼類型。 – danludwig 2014-10-28 21:02:22

+0

謝謝堆!將其更改爲UserId完全可行。我認爲'id'只是一個臨時名稱,它將稍後與方法參數中的任何內容匹配。猜猜我完全錯了。 – 2014-10-28 21:10:25

+0

也把控制器動作。你不但沒有放置錯誤,而且也沒有顯示你的控制器方面! – 2014-10-28 21:10:26

回答

2

如果你期待參數是userId,然後用@Html.ActionLink這樣的:

@Html.ActionLink("Edit","Edit","UserProfile", new { userId = Model.ApplicationUserId },null) 

如果傳遞的參數與名稱id,那麼MVC會喜歡你的路線中提到:

https://localhost:44304/UserProfile/Edit/92b1347c-c9ec-4728-8dff-11bc9f935d0b 

哪個好,但是你的方法應該是預期參數具有適當名稱的東西:

// GET: /UserProfile/Edit/{id} 
public ActionResult Edit(String id){ 


    //your code 
    return View(); 
} 

如果您有一些時間,請查看此ASP.NET MVC Routing Overview瞭解更多詳情。

希望它有幫助。

+2

哇!我認爲'id'只是一個臨時名稱,它將稍後與方法參數中的任何內容匹配。猜猜我完全錯了,並感謝這堆:) – 2014-10-28 21:08:53

+0

它發生在我身上,當我開始與MVC:D @RandikaWijekoon很高興我可以幫助 – 2014-10-28 21:10:30

+1

沒有投票:)。只是剔。即使在5分鐘之前,我也非常想要打勾。感謝堆! – 2014-10-28 21:17:28

1

您需要更改控制器操作參數從userId編輯爲id - 最佳變體。

public Edit(int id) 
{ 
} 

或者

@Html.ActionLink("Edit","Edit","UserProfile", new { userId = Model.ApplicationUserId },null)