Tôi đang cố gắng viết một điều khiển chung (có nghĩa là hữu ích ở nhiều nơi) mà tôi có thể sử dụng lại trong toàn bộ công ty của mình.Làm cách nào để tạo điều khiển 'chung' trong Asp.Net MVC Razor?
Tôi gặp sự cố với các đại lượng C# thực tế trong chế độ xem và chế độ xem của mình.
Dưới đây là một ví dụ về những gì tôi đang cố gắng để làm:
Generic xem phần: (_Control.cshtml
)
@model SimpleExample<dynamic>
@Model.HtmlTemplate(Model.Data)
ViewData: (SimpleExample.cs
)
public class SimpleExample<T>
{
public T Data;
public Func<T, System.Web.WebPages.HelperResult> HtmlTemplate;
}
sử dụng Ví dụ: (FullView.cshtml
)
@model Foo.MyViewData
@Html.Partial("_Control", new SimpleExample<MyViewData>
{
Data = Model,
HtmlTemplate = @<div>@item.SomeProperty</div>
})
Phần quan trọng của chức năng tôi đang tìm kiếm là người tiêu dùng nhận được đối tượng đã nhập khi viết nội tuyến Html của họ để họ có thể sử dụng Intellisense (như trong FullView.cshtml
).
Tất cả mọi thứ biên dịch tốt và IntelliSense đang làm việc, nhưng tôi nhận được lỗi một thời gian chạy:
The model item passed into the dictionary is of type
'AnytimeHealth.Web.ViewData.SimpleExample`1[Foo.MyViewData]',
but this dictionary requires a model item of type
'AnytimeHealth.Web.ViewData.SimpleExample`1[System.Object]'.
Tôi đã đọc mà tôi có thể có thể sử dụng covarience vào loại generic của tôi để có được điều này để làm việc, nhưng tôi không chắc chắn làm thế nào để làm điều đó.
Bạn có thể vui lòng hướng dẫn tôi cách làm việc này không?
Điều này làm việc cho tôi, ngoại trừ tôi mất intellisense trong _Control ': (' – jjnguy