Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC-带有动态模型的RenderPartial_Asp.net Mvc_Asp.net Mvc 3_Dynamic - Fatal编程技术网

Asp.net mvc ASP.NET MVC-带有动态模型的RenderPartial

Asp.net mvc ASP.NET MVC-带有动态模型的RenderPartial,asp.net-mvc,asp.net-mvc-3,dynamic,Asp.net Mvc,Asp.net Mvc 3,Dynamic,我们有一个ViewModel,其中包含一组小部件: 如果partial具有动态模型或小部件的模型,则可以使用此功能 但是,我希望intellisense包含在部分视图中,因此我为我的视图提供了一个适当小部件数据类型的模型,例如: @model Widget<string> @model小部件 不幸的是,这会引发异常,因为@Html。Partial将动态模型转换为System.Object 除了在partial中再次手动强制转换小部件外,是否有一种方法可以调用Html.partia

我们有一个ViewModel,其中包含一组
小部件

如果partial具有动态模型或
小部件的模型,则可以使用此功能

但是,我希望intellisense包含在部分视图中,因此我为我的视图提供了一个适当小部件数据类型的模型,例如:

@model Widget<string>
@model小部件
不幸的是,这会引发异常,因为
@Html。Partial
将动态模型转换为System.Object


除了在partial中再次手动强制转换小部件外,是否有一种方法可以调用
Html.partial
,而不将动态模型强制转换为对象

创建一个界面,所有动态对象类型的小部件都必须实现这个界面,我以前也做过同样的事情,工作很顺利

render的简单示例:(这只是一个您必须完成的快速示例)

景色

@model IWidget

@model.RenderMyWidget(this.html);

创建一个界面,所有动态对象类型的小部件都必须实现这个界面,我以前也做过同样的事情,工作很顺利

render的简单示例:(这只是一个您必须完成的快速示例)

景色

@model IWidget

@model.RenderMyWidget(this.html);

如果您知道
T
字符串
,为什么要使用
动态
?我们不知道
T
字符串
。主视图模型包含一组小部件,这些小部件可以是
Widget
Widget
等。只有部分“知道”应该传递给它的内容。如果使用T,则不需要动态。视图模型应该有一组小部件,而不是Widget@Mark,我应该更明确一点-视图模型将包含不同类型的小部件。@Ben我想我现在看到了问题。如果你知道
T
字符串,为什么要使用
动态
?我们不知道
T
字符串
。主视图模型包含一组小部件,这些小部件可以是
Widget
Widget
等。只有部分“知道”应该传递给它的内容。如果使用T,则不需要动态。视图模型应该有一组小部件,而不是Widget@Mark,我应该更明确一些-视图模型将包含不同类型的小部件。@Ben,我想我现在看到了问题所在,所以您将呈现小部件的责任委托给了小部件。我来试一试。啊,你把呈现小部件的责任委托给了小部件。我要试一试。
    public interface IWidget{

     public System.Web.Mvc.MvcHtmlString RenderMyWidget(HtmlHelper helper);

}




public class ContenidoWidgets : IWidget{

    private String Controller { get; set; }

    private String Action { get; set; }

    private Object Parms {get; set; }

    public ContenidoWidgets(String controller, String action, Object parms)
    {

        this.Controller = controller;
        this.Action = action;
        this.Parms = parms;

    }

    public System.Web.Mvc.MvcHtmlString RenderMyWidget(HtmlHelper helper){

        return System.Web.Mvc.Html.ChildActionExtensions.Action(helper, this.Action, this.Controller, this.Parms);

    }
@model IWidget

@model.RenderMyWidget(this.html);