[英]Get MVC partialView/View data in string
我有一個要求,我需要將View中的HTML數據保存在字符串變量中,類似這樣
string data = GetData(Id)
GetData是一種返回View的方法,例如
public ActionResult GetData(int Id) { return PartialView("ViewName"); }
我的要求是獲取此View創建/返回的任何內容,並將其作為HTML分配給string
變量data
真的有可能嗎?
感謝幫助
嘗試這個
public static string GetTemplateContentInstance(ControllerContext controllerContext, string viewName, object model)
{
if (string.IsNullOrWhiteSpace(viewName))
//Return name of view for current action
viewName = controllerContext.RouteData.GetRequiredString("action");
controllerContext.Controller.ViewData.Model = model;
using (StringWriter stringWriter = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
ViewContext viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, stringWriter);
viewResult.View.Render(viewContext, stringWriter);
return stringWriter.GetStringBuilder().ToString();
}
}
用途如下
string viewBody = GetTemplateContentInstance(this.ControllerContext, Url.Content("ViewName"), ModelName)
嘗試這個:
private string GetHtmlFromUrl(string url)
{
string html = "";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// get the response stream.
//Stream responseStream = response.GetResponseStream();
// use a stream reader that understands UTF8
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
html = reader.ReadToEnd();
// close the reader
reader.Close();
response.Close();
return html;//return content html
}
用法:
string data = GetHtmlFromURL("/YourController/GetData/{ID}")
//or GetHtmlFromURL("/YourController/GetData?ID={ID}") if your route isn't set to accept ID
您嘗試創建一個HtmlHelper的實例,並在該幫助器中使用RenderPartial擴展方法。
注意:您需要包括對System.Web.Mvc.Html的使用,以訪問RenderPartial
public static HtmlHelper GetHtmlHelper( this Controller controller )
{
var viewContext = new ViewContext( controller.ControllerContext, new FakeView(), controller.ViewData, controller.TempData, TextWriter.Null );
new HtmlHelper( viewContext, new ViewPage() ).RenderPartial("/mypartial");
}
public class FakeView : IView
{
public void Render( ViewContext viewContext, TextWriter writer )
{
throw new InvalidOperationException();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.