Asp.net mvc ASP.NET MVC-带有动态模型的RenderPartial
我们有一个ViewModel,其中包含一组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
小部件:
如果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);