0

ページ上のフォーラムの主題のユーザーが、選択した主題のデータベース コンテンツからページにロードされたことを選択する必要があります。このタスクの解決にどのようにアプローチしたかを説明します。このコードは、フォーラム スレッドを表示します。

      <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();
    }

リンクをクリックすると、エラーが発生します。

パラメーター ディクショナリには、型 "System.Int32" のパラメーター "id" の値が NULL のレコードが含まれています

この問題を解決するには?

4

1 に答える 1

2

リンクの ID 属性は HTML 要素の ID です。そのため、JavaScript で何かをしたい場合は、その ID が役立ちます。

現在のコードでは、id がコントローラー アクションに送信されないため、エラーが表示されます。hrefコントローラ/アクションとともにID を属性に入れる必要があります。

ID をコントローラー アクションに渡す方法は 2 つあります。

  • すぐに使用できるルーティング ルールがある場合は、次を使用できます。

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

  • この方法でクエリ文字列を介して送信できます。

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

編集:

  • ルーティングを機能させるために要素 ID は必要ありません。

これを手動で行う代わりに、Razor ヘルパーのいずれかを使用できます。

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

ルーティング パラメータ以外に、いくつかの属性を link 要素に追加する必要がある場合:

@Html.ActionLink("About all", "Home", "ThreadView", new { id = 1}, new { @class = "redLink", id="aboutall"})
于 2013-08-25T12:52:43.870 に答える