2015-08-09 6 views
0

Я попытался преобразовать элемент Детского элемента Umbraco в PartialView, но я хочу, чтобы он возвращался как строка, а не как частичный вид.Как отредактировать частичный вид на строку

Я много читал на форумах, и у меня появились ошибки, когда я пытаюсь использовать эти примеры.

У меня есть несколько разных шаблонов, которые я хочу получить от контроллера, когда пользователь попадает на сайт. каждые несколько часов, я имею в виду, один раз в несколько часов, чтобы проверить через Ajax, если есть новые предметы за это время. ajax работает правильно.

Я получаю сообщение об ошибке «Ссылка на объект не установлена ​​в экземпляр объекта». и я действительно не знаю, что такое ошибка, это модель? это частичное имя? что не так? или как заставить его работать.

Вот мой код

foreach (dynamic item in rangeTime.Children) 
        { 
         var docType = item.ContentType.Alias; 
         var partialViewToShow = docType.ToString().Trim().ToLower().Replace(" ", "") == "birthday" ? "BDay" : "ContentPage"; 

         st.Append(string.Format("<div class=\"custom-item\" data-time-to-show=\"{0}\">", item.slideTime)); 
         st.Append(RenderPartialViewToString(partialViewToShow, item)); 
         st.Append("</div>"); 
        } 

называющий к этой функции: (обязательно на "viewResult.View.Render (ViewContext, ЕО);")

protected string RenderPartialViewToString(string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = ControllerContext.RouteData.GetRequiredString("action"); 

     ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
      ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); // FAIL HERE 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 
+0

Какие ошибки вы получаете, когда это не удается на 'viewResult.View.Render (viewContext, sw);'? – bowserm

+0

Привет @bowserm, Это ошибка, я получаю: «Исключение типа„System.Web.HttpCompileException“произошло в System.Web.dll, но не был обработан в пользовательском коде Дополнительная информация: Внешний компонент выброшено исключение «. – Idoshhh

+0

Похоже, что ошибка в частичном представлении, а не в коде, который вы вставили выше? Можете ли вы сообщить, что происходит внутри PartialView, который вы пытаетесь сделать? Возможно, в качестве теста просто попробуйте бросить этот PartialView на страницу вместо того, чтобы делать причудливую строчную работу, чтобы увидеть, правильно ли она отображается. Я предполагаю, что он не может скомпилировать бритву в вашем PartialView. – bowserm

ответ

0

В этом случае, HttpCompileException означает, что система не смогла отобразить PartialView, потому что она не могла правильно скомпилировать бритву.

Я предлагаю добавить в PartialView на страницу с помощью

foreach (dynamic item in rangeTime.Children) 
{ 
    var docType = item.ContentType.Alias; 
    var partialViewToShow = docType.ToString().Trim().ToLower().Replace(" ", "") == "birthday" ? "BDay" : "ContentPage"; 

    Html.Partial(partialViewToShow, item) 
} 

, чтобы увидеть, если вы можете получить его, чтобы сделать, прежде чем пытаться сделать его в виде строки. В противном случае, возможно, внутреннее исключение будет иметь более подробную информацию.

Смежные вопросы