从点击的网址获取ID

时间:2013-08-25 09:58:44

标签: asp.net-mvc

我必须选择页面上论坛主题的用户从所选主题的数据库内容加载到页面上。我将描述我如何处理这项任务的解决方案。此代码提供论坛主题:

      <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”

如何解决这个问题?

1 个答案:

答案 0 :(得分: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。

您可以使用其中一个Razor Helpers:

,而不是手动执行此操作
@Html.ActionLink("About all", "Home", "ThreadView", new { id = 1})

除了路由参数之外,如果需要向link元素添加一些属性:

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