web-dev-qa-db-ja.com

@ Html.ActionLinkと@ Html.DisplayForを同時に(正しくありませんが、私がやりたいことを説明しています)

Student(/ Student/Details/1)という名前のコントローラー内のビューに次のテーブルがあります。

    @foreach (var item in Model.Enrollments)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Course.Title)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Grade)
            </td>
        </tr>
    }

各テーブル定義を、Course(/ Course/Details/1)という名前のコントローラー内のビューに移動するリンクにしたいと思います。

私は次のようなことを試みました:

@Html.ActionLink(Html.DisplayFor(modelItem => item.Course.Title, "Details", "Course"))

代わりに

@Html.DisplayFor(modelItem => item.Course.Title)

これはコンパイルされません。参照されているタイトルの詳細へのリンクとともに、モデルのタイトルを適切に表示するにはどうすればよいですか?

20
Ecnalyr

私があなたの質問を正しく理解しているなら、あなたはコースのテキストとのリンクが欲しいです。

これは機能するはずです:

  @Html.ActionLink(item.Course.Title, "Details", "Course")

コースのIDをコントローラーに渡したい場合(ルーティングルールが正しく設定されていて、IDがitem.Course.Idのようなものであると想定)

  @Html.ActionLink(item.Course.Title, "Details", "Course", new { Id = item.Course.Id }, null /* html attributes */)

プロパティでUIHint属性を使用する必要がある場合は、フォーマットを追加するために、これを使用できます。

  <a href="@Url.Action("Details", "Course", new { Id=item.Course.Id})">@Html.DisplayFor(modelItem => item.Course.Title)</a>
35
Iridio

_)_の後に_Html.DisplayFor(modelItem => item.Course.Title_を忘れました。

たぶんそれに.ToString()を追加してみてください。

3
kows
// you want to use link with the displaying a course. you can use.

<a href = "@url.action("Details","course",new {Id = item.Course.Id}
@html.displayfor(m => m.Course.Title)</a>

// second approach

 @Html.ActionLink(item.Course.Title, "Details", "Course", new { Id = item.Course.Id })
0
saurav singh