2013-08-25 91 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