2015-02-09 72 views
0

在我Index頁我有以下鏈接Details觀點:MVC路由空參數錯誤

@Html.ActionLink("Details", "Details", new { id = item.ClubId })| 

我控制器期待一個int:

public ActionResult Details(int ClubId) 
{ 
    var club = _service.GetClub(ClubId); 
    var model = AutoMapper.Mapper.Map<ClubViewModel>(club); 
    return View(model); 
} 

林每次都是這樣,雖然獲得:

參數字典包含參數'ClubId'的空條目對於方法 'System.Web.Mvc.ActionResult Details(Int32)'在 'MyProject.Web.Controllers.ClubsController'中的非空類型'System.Int32'的0。可選 參數必須是參考類型,可爲空類型,或者聲明爲可選參數 。參數名:參數

我知道這是什麼做的路由,但是我已經試過交換UrlParameter.Optional"",使視圖模型的ClubId可空,但仍然錯誤。

如果我重新連接我的控制器接受Club對象,並從索引視圖item通過,則一切都很好,和ClubId在調試填充,但我留下了URL中的愚蠢大型參數列表。

我真的不明白問題在這裏?

+3

你有沒有試過使用ClubId而不是僅僅是id? – oskar132 2015-02-09 16:37:34

+0

爲了上帝的緣故,謝謝 – JsonStatham 2015-02-09 16:40:03

+0

'/ url/parameters'和'?query = string&parameters'之間有區別。前者影響路由,後者不影響路由。 – Andrei 2015-02-09 16:40:46

回答

1

你有沒有嘗試過使用ClubId而不是僅僅是id?

2

您的控制器期待一個名爲ClubId的參數,但您傳遞的參數爲id。他們需要匹配。

+0

有時我遇到了一個奇怪的問題,因爲'id'參數名稱根本不起作用,即當調用操作時未填充參數。所以這些應該更好地匹配'ClubId' – Andrei 2015-02-09 16:43:28