如何在Asp.Net MVC Razor中创建“通用”控件?

金吉

我试图编写一个通用的(在许多地方都有用)控件,以便在整个公司中重复使用。

我的视图和视图模型中的实际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.cshtml

@model SimpleExample<dynamic>@model dynamic

它会工作,但会失去的智能SimpleExample,的智能MyViewData仍然会起作用。

我认为这是因为动态类型将在运行时知道,但是泛型的类型

需要一个较早的时间(也许是编译时间),这时object才是已知的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP.NET MVC Razor中编码“ /”

来自分类Dev

如何在ASP.NET MVC中创建可重用控件

来自分类Dev

如何在ASP.NET MVC4中为Web API网址创建通用方法

来自分类Dev

如何在asp.net MVC4中为Web API网址创建通用方法

来自分类Dev

如何在ASP.NET MVC中创建Webhook?

来自分类Dev

如何在asp.net MVC中创建Ajax链接?

来自分类Dev

如何在 ASP.Net MVC 中创建下拉列表

来自分类Dev

在ASP.NET MVC4中动态创建控件

来自分类Dev

如何在ASP.NET MVC中重置会话超时

来自分类Dev

我如何在ASP.NET MVC中隐藏div

来自分类Dev

如何在ASP.NET MVC中运行作业?

来自分类Dev

如何在ASP.NET MVC中配置HTML压缩

来自分类Dev

如何在ASP.NET MVC中组织DAL

来自分类Dev

如何在ASP.NET MVC中读取PPT文件?

来自分类Dev

如何在ASP Net MVC 3中运行迁移

来自分类Dev

如何在ASP.NET MVC中获取视图路径

来自分类Dev

如何在Asp.net MVC中实现插件/插件?

来自分类Dev

如何在ASP NET MVC 6中更新模型?

来自分类Dev

DATEDIFF如何在Asp.net MVC中编写

来自分类Dev

如何在asp.net mvc中更新图像?

来自分类Dev

如何在ASP.NET MVC中屏蔽出站URL?

来自分类Dev

如何在ASP.NET MVC中运行作业?

来自分类Dev

如何在ASP.NET MVC中读取PPT文件?

来自分类Dev

如何在ASP.NET 5 MVC中访问缓存?

来自分类Dev

如何在Asp .net MVC中验证下拉列表

来自分类Dev

如何在ASP.Net MVC中调用Bootstrap模式?

来自分类Dev

如何在ASP.NET MVC中配置AutoMapper属性

来自分类Dev

asp.net MVC如何在集合中显示值

来自分类Dev

如何在asp.net mvc 中设置Iframe src?