簡體   English   中英

如何將部分視圖呈現為字符串

[英]How to Render Partial View To String

我試圖將Umbraco Children項目轉換為PartialView,但我希望它以字符串而不是部分View的形式返回。

我在論壇上讀了很多書,嘗試這些示例時出現了錯誤。

當用戶進入站點時,我想從控制器中獲取幾種不同的模板。 我的意思是每隔幾個小時要通過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,sw);上失敗”)

 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();
        }
    }

在這種情況下,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)
}

在嘗試將其呈現為字符串之前先查看是否可以使其呈現。 否則,內部異常可能會有更多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM