2012-03-06 8 views
17

Tôi có bảng sau đây trong chế độ xem trong bộ điều khiển có tên Sinh viên (/ Sinh viên/Chi tiết/1):@ Html.ActionLink và @ Html.DisplayFor cùng một lúc (không đúng, nhưng nó mô tả những gì tôi muốn làm)

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

Tôi muốn đặt từng định nghĩa bảng thành liên kết đưa tôi đến chế độ xem trong bộ điều khiển có tên Khóa học (/ Khóa học/Chi tiết/1).

Tôi đã thử mọi thứ dọc theo dòng:

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

ở vị trí của

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

Mà không biên dịch. Làm cách nào để hiển thị tiêu đề của mô hình phù hợp với liên kết đến chi tiết của tiêu đề được tham chiếu?

Trả lời

29

Nếu tôi hiểu đúng câu hỏi của bạn, bạn muốn có một liên kết với văn bản của khóa học.

này nên làm việc:

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

Nếu bạn muốn vượt qua ID của khóa học với bộ điều khiển (giả sử quy tắc định tuyến của bạn được đặt đúng và Id là một cái gì đó như: item.Course.Id)

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

Nếu bạn cần phải sử dụng thuộc tính UIHint về sở hữu, để bổ sung thêm định dạng, bạn có thể sử dụng

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

Tôi tin rằng bit thứ hai của mã là chính xác những gì tôi cần. Cảm ơn bạn. – Ecnalyr

+0

Thực ra, tôi đang gặp một chút rắc rối. Tôi đã sử dụng mã này: @ Html.ActionLink (item.Course.Title, "Chi tiết", "Khóa học", mới {id = item.Course.CourseID}) nhưng mỗi liên kết được tạo liên kết cụ thể đến điều này: /Sinh viên/Chi tiết/2? Chiều dài = 6 Tại sao điều này lại xảy ra? Tôi không biết nơi "? Length = 6" xuất phát từ đâu, cũng không phải lý do tại sao nó vẫn đi qua bộ điều khiển/Student của tôi thay vì bộ điều khiển của tôi/Course. – Ecnalyr

+0

Chờ đã, tôi nghĩ tôi đã thấy sai lầm của mình. Sẽ trả lời ngay. – Ecnalyr

3

Bạn đã quên ) sau Html.DisplayFor(modelItem => item.Course.Title.

Có thể thử thêm .ToString() để có thể trợ giúp.

+0

Vâng, tôi chắc chắn đã có một rủi ro với dấu ngoặc đơn, cảm ơn bạn. – Ecnalyr

0
// 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

Vui lòng bao gồm lời giải thích cho mã. –

+0

Nếu bạn muốn chuyển ID của khóa học cho bộ điều khiển (giả sử các quy tắc định tuyến của bạn được đặt chính xác và Id giống như sau: item.Course.Id) –