Próbuję napisać ogólną (znaczącą przydatność w wielu miejscach) kontrolę, którą mogę ponownie wykorzystać w całej mojej firmie.Jak mogę utworzyć kontrolę "ogólną" w maszynie AspANet MVC Razor?
Mam problemy z rzeczywistymi generacjami C# w moim widoku i viewmodel.
Oto przykład tego, co próbuję zrobić:
Generic widok częściowy: (_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;
}
Przykład użycia: (FullView.cshtml
)
@model Foo.MyViewData
@Html.Partial("_Control", new SimpleExample<MyViewData>
{
Data = Model,
HtmlTemplate = @<div>@item.SomeProperty</div>
})
Ważną częścią funkcjonalności, której szukam, jest to, że konsumenci uzyskują wpisany obiekt podczas pisania ich html w linii, aby mogli używać Intellisense (jak w FullView.cshtml
).
Wszystko kompiluje grzywny i intellisense działa, ale jestem uzyskiwanie błąd się wykonawczego:
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]'.
Czytałem, że mogę być w stanie wykorzystać covarience na moim typu rodzajowego uzyskać to pracować, ale nie jestem pewien, jak to zrobić.
Czy możesz mi powiedzieć, jak mogę to usprawnić?
To działa dla mnie, z wyjątkiem utraty intellisense w _Control ': (' – jjnguy