2010-06-24 31 views
9

Tôi gặp vấn đề tương tự như mô tả ở đây: MVC T4 MvcTextTemplateHost and Customized "Controller" T4 Template nhưng hy vọng, đơn giản hơn.Nhận tên bộ điều khiển trong mẫu View T4

Tôi có một mẫu Xem tùy chỉnh (View.tt, Create.tt) cho dự án ASP.NET MVC. Tôi không thể tìm ra cách để có được tên bộ điều khiển trong các mẫu xem này. mvcHost.ControllerName và mvcHost.ControllerRootName đều là null trong dạng xem mẫu. Tuy nhiên, một nơi nào đó trong tên bộ điều khiển đường ống được biết, vì chế độ xem được tạo trong thư mục ControllerName. Tôi muốn tham khảo nó trong chính mẫu đó.

Cụ thể, tôi muốn tạo ra HTML.ActionLink("Edit", MVC.<controllername>.Edit(id)) thay vì HTML.ActionLink("Edit", "Edit", new {id = item.id})

Có thể lấy tên của bộ điều khiển trong Xem mẫu?

+0

EDIT: Xóa thẻ t4mvc không liên quan đến câu hỏi – Felix

+0

Bạn đã kết thúc bằng cách nào? Tôi cũng muốn tạo ra các khung nhìn đang sử dụng T4MVC vì vậy tôi cần tên bộ điều khiển. –

+0

chỉ cần đặt trình giữ chỗ/* đặt bộ điều khiển tại đây * /. Sau khi tất cả, tôi đang làm điều đó cho bản thân mình (mặc dù một số thành viên trong nhóm "mượn" nó từ tôi :) - vì vậy không ai than phiền! – Felix

Trả lời

2

Tôi không nghĩ rằng có một cách để có được thông tin đó trong MVC 1.0 hoặc MVC 2. Thuộc tính ControllerRootName và ControllerName từ máy chủ là dành cho mẫu bộ điều khiển T4 và không cho mẫu xem T4.

Tôi sẽ xem liệu chúng tôi có thể thêm thông tin khác vào máy chủ T4 để bật các thuộc tính này khi tạo chế độ xem hay không.

Lý do tệp được tạo hiển thị trong thư mục bên phải là hệ thống dự án MVC lấy đầu ra của mẫu T4 và đặt nó ở đó. Bản thân hệ thống T4 không tham gia vào quá trình này.

+1

Có, chúng tôi muốn bạn bật các thuộc tính này! –

+1

Eilon, bất kỳ ý tưởng nếu điều này đã được thêm vào như MVC 5 (tháng 10 năm 2014)? Tôi muốn thêm một lớp tùy chỉnh trên 'Html.BeginForm', nhưng theo như tôi có thể nói tôi cần biết tên bộ điều khiển để chỉ định htmlAttributes. – Sam

4

Kể từ khi tôi theo quy ước hầu như luôn luôn sử dụng cùng tên cho điều khiển của tôi như tôi đã đặt tên là Model, tôi sử dụng mã này trong mẫu của tôi để có được những tên mô hình và do tên điều khiển:

@Html.ActionLink("Create new", 
    MVC.<#= mvcHost.ViewDataTypeName.Split('.').Last() #>.Create()) 
+0

Cảm ơn ý tưởng. Tôi đoán, * nếu * Tôi có mối quan hệ một-một giữa các bộ điều khiển và các mô hình của tôi, đó là một ý kiến ​​hay. Cho rằng tôi chưa bao giờ thấy thiết kế như vậy ở bất cứ nơi nào nhưng trong các hướng dẫn tầm thường nhất - tôi sẽ phải chờ giải pháp cơ bản hơn ... – Felix

Các vấn đề liên quan