ViewData.Model в частичном равен нулю - PullRequest
0 голосов
/ 23 октября 2008

На моей главной странице (звоните index.aspx) я звоню

<%Html.RenderPartial("_PowerSearch", ViewData.Model);%>

Здесь viewdata.model != null Когда я приеду в мое частичное:

<%=ViewData.Model%>

Говорит viewdata.model == null

Что дает?!

Ответы [ 2 ]

1 голос
/ 23 октября 2008

Вы пытались просто передать 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, а не модель.

0 голосов
/ 23 октября 2008

Это не проверено:

<%=Html.RenderPartial("_ColorList.ascx", new ViewDataDictionary(ViewData.Model.Colors));%>

В этом случае ваше контрольное представление ожидает данные, специфичные для него. Если вашему элементу управления требуется свойство в модели с названием «Цвета», возможно:

<%=Html.RenderPartial("_ColorList.ascx", new ViewDataDictionary(new { Colors = ViewData.Model.Colors }));%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...