0
我試圖將Umbraco Children項轉換爲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,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();
}
}
當viewResult.View.Render(viewContext,sw);'失敗時會得到什麼樣的錯誤? – bowserm
嗨@bowserm,這是我得到的錯誤: 「在System.Web.dll中發生類型'System.Web.HttpCompileException'的異常,但未在用戶代碼中處理 其他信息:外部組件已拋出例外。」 – Idoshhh
聽起來可能錯誤是在部分視圖中,而不是在上面粘貼的代碼中?你能報告你正在嘗試渲染的PartialView內部發生了什麼?也許作爲一個測試,只要嘗試將PartialView扔到頁面上,而不是花費精力去查看它是否正確呈現。我的猜測是它無法在您的PartialView中編譯剃鬚刀。 – bowserm