在MVC 2與普通視圖引擎,我可以通過return Json()
返回剃刀局部視圖
但隨着新的Razor .cshtml觀點我無法弄清楚返回ASCX局部視圖作爲字符串這個怎麼做。我一直在收到Type 'ASP.CustomerForm_cshtml' does not inherit from 'System.Web.UI.UserControl'.
部分視圖繼承自System.Web.Mvc.WebViewPage<T>
,並且如果我從第一個錯誤說的System.Web.UI.UserControl<T>
繼承,則彈出另一個錯誤。
有關如何使用ASP MVC 3和Razor視圖引擎解決此問題的任何想法?
這是我ControlToString功能:
private string ControlToString(string controlPath, object model)
{
ViewPage page = new ViewPage();
ViewUserControl ctl = (ViewUserControl)page.LoadControl(controlPath);
page.Controls.Add(ctl);
page.ViewData.Model = model;
page.ViewContext = new ViewContext();
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.HttpContext.Current.Server.Execute(page, writer, false);
string outputToReturn = writer.ToString();
writer.Close();
//return this.Json(outputToReturn.Trim());
return outputToReturn.Trim();
}
謝謝你,它的工作原理。我將視圖看作一個字符串。但是這個模型並沒有在你的代碼中的任何地方被照顧到。我嘗試在'CshtmlView()'中將模型作爲參數添加,但它沒有將模型作爲參數。有什麼想法嗎? – Martin 2010-09-13 06:10:03
我解決了這個問題,你必須在你的代碼中添加'this.ViewData.Model = model;'然後它可以工作:D – Martin 2010-09-13 06:13:25