MVC partialView /查看数据我有我需要从查看HTML数据被保存在一个字符串变量的要求,像这样获取字符串
string data = GetData(Id)
和的GetData是返回视图的方法像
public ActionResult GetData(int Id) { return PartialView("ViewName"); }
我的要求是要什么有什么由此看来创建/回报作为HTML被分配到string
变量data
实际上可行吗?
感谢您的帮助
MVC partialView /查看数据我有我需要从查看HTML数据被保存在一个字符串变量的要求,像这样获取字符串
string data = GetData(Id)
和的GetData是返回视图的方法像
public ActionResult GetData(int Id) { return PartialView("ViewName"); }
我的要求是要什么有什么由此看来创建/回报作为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
感谢Michael的快速响应,我已经复制了你的代码,但得到了这个错误''''GetHtmlFromURL'这个名字在当前上下文中不存在''''。我在同一个类中复制了''''GetHtmlFromURL''''方法,但不知道为什么应该得到这个错误。任何想法? – Jay
我需要看到更多的代码才能告诉你。用你现在拥有的东西来更新你的问题。 –
您尝试创建的HtmlHelper的一个实例,并使用该助手中的RenderPartial扩展方法
注意:您需要包含一个using 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();
}
}
看一看[这个问题](http://stackoverflow.com/questions/483091/render- a-view-as-a-string) –