我想寫一個通用的(在許多地方有用)控制,我可以在我的公司重複使用。如何在Asp.Net MVC Razor中創建'通用'控件?
我在我的視圖和viewmodel中遇到了實際的C#泛型問題。
這裏是什麼,我試圖做一個例子:
通用局部視圖:(_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;
}
用法示例: (FullView.cshtml
)
@model Foo.MyViewData
@Html.Partial("_Control", new SimpleExample<MyViewData>
{
Data = Model,
HtmlTemplate = @<div>@item.SomeProperty</div>
})
我在尋找的功能的重要部分是消費者在內聯編寫Html時會得到一個類型化對象,以便他們可以使用Intellisense(如FullView.cshtml
)。
一切編譯罰款和智能感知是工作,但我得到的錯誤的運行時間:
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]'.
我讀過,我也許可以用我的泛型類型的協變性得到這個工作,但我不知道該怎麼做。
請問我可以如何讓這項工作?
這對我有用,除了我在_Control'中失去智能感知:(' – jjnguy