在我的主页(调用它index.aspx
)我调用
<%Html.RenderPartial("_PowerSearch", ViewData.Model);%>
当我viewdata.model != null
到达我的部分时:
<%=ViewData.Model%>
说viewdata.model == null
是什么赋予了?!
在我的主页(调用它index.aspx
)我调用
<%Html.RenderPartial("_PowerSearch", ViewData.Model);%>
当我viewdata.model != null
到达我的部分时:
<%=ViewData.Model%>
说viewdata.model == null
是什么赋予了?!
您是否尝试过只传入 ViewData 而不是 ViewData.Model?这是我在助手中使用的精简版(无耻地从 Storefront 系列中窃取):
/// <summary>
/// Renders a LoggingWeb user control.
/// </summary>
/// <param name="helper">Helper to extend.</param>
/// <param name="control">Type of control.</param>
/// <param name="data">ViewData to pass in.</param>
public static void RenderLoggingControl(this System.Web.Mvc.HtmlHelper helper, LoggingControls control, object data)
{
string controlName = string.Format("{0}.ascx", control);
string controlPath = string.Format("~/Controls/{0}", controlName);
string absControlPath = VirtualPathUtility.ToAbsolute(controlPath);
if (data == null)
{
helper.RenderPartial(absControlPath, helper.ViewContext.ViewData);
}
else
{
helper.RenderPartial(absControlPath, data, helper.ViewContext.ViewData);
}
}
请注意,我传入的是当前 ViewData 而不是 Model。
这是未经测试的:
<%=Html.RenderPartial("_ColorList.ascx", new ViewDataDictionary(ViewData.Model.Colors));%>
在这种情况下,您的控制视图需要特定于它的视图数据。如果您的控件想要一个名为 Colors 的模型上的属性,那么也许:
<%=Html.RenderPartial("_ColorList.ascx", new ViewDataDictionary(new { Colors = ViewData.Model.Colors }));%>