2013-08-25 117 views
0

對於我來說,在選擇頁面上的所選主題的數據庫內容時,頁面上的論壇主題的用戶有必要進行選擇。我將描述我是如何接近這個任務的解決方案的。此代碼展示論壇主題:從被點擊的網址獲取ID

 <a href='Home/ThreadView' id='1'>About all</a> 
     <a href='Home/ThreadView' id='2'>Cars</a> 

ThreadView動作有代碼:

[HttpGet] 
    public ViewResult ThreadView(int id) 
    { 
     ViewData[ThreadViewSelector] = Thread.GetThreadView(id);//Thread is a model. 
     return View(); 
    } 

當我點擊任何鏈接上發生錯誤:

參數字典有紀錄NULL值的參數「 ID「類型」System.Int32「

如何解決此問題?

+2

這個ID可以作爲'About all' –

回答

2

鏈接中的ID屬性是HTML元素的ID ...因此,如果您想使用JavaScript做某件事,那麼該ID可能會很有用。

使用您當前的代碼,ID永遠不會發送到控制器操作,這就是您看到的錯誤原因。您需要將該ID連同控制器/操作一起放入href屬性中。

您有2個選項ID傳遞給你的控制器動作:

  • 如果你有外的現成的路由規則,你可以使用:

    <a href='Home/ThreadView/1' id='1'>About all</a>

  • 您可以通過以下方式通過查詢字符串發送:

    <a href='Home/ThreadView/?id=1' id='1'>About all</a>

編輯:

  • 元素ID,以便有路由工作不是必需的。

除了手動做這個的,你可以使用剃刀的一個助手:

@Html.ActionLink("About all", "Home", "ThreadView", new { id = 1}) 

如果你需要一些屬性添加到鏈接元素,除了路由參數:

@Html.ActionLink("About all", "Home", "ThreadView", new { id = 1}, new { @class = "redLink", id="aboutall"}) 
+0

傳遞給我如何分享一個代碼的屬性和元素id html的概念id,以免進一步混淆? –

+0

John,元素id不是必需的......只是將它用作通過id訪問該元素的一種方式。在你的情況不是必需的。在這種情況下,您正在手動敲打鏈接,但是您可以按照我編輯的答案進行操作。 – Romias