Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取字符串形式的MVC partialView/View数据_C#_Asp.net Mvc - Fatal编程技术网

C# 获取字符串形式的MVC partialView/View数据

C# 获取字符串形式的MVC partialView/View数据,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个要求,需要将视图中的HTML数据保存在字符串变量中,如下所示 string data=GetData(Id) GetData是一个返回视图的方法,类似于 public ActionResult GetData(int-Id) { 返回PartialView(“视图名称”); } 我的要求是获取此视图创建的任何内容/将其作为HTML返回以分配给stringvariabledata 真的有可能吗 感谢您的帮助试试这个: private string GetHtmlFromUrl(strin

我有一个要求,需要将视图中的HTML数据保存在字符串变量中,如下所示

string data=GetData(Id)

GetData是一个返回视图的方法,类似于

public ActionResult GetData(int-Id)
{ 
返回PartialView(“视图名称”);
}

我的要求是获取此视图创建的任何内容/将其作为HTML返回以分配给
string
variable
data

真的有可能吗

感谢您的帮助

试试这个:

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扩展方法

注意:您需要包含一个using to 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();
            }
        }
试试这个

 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)

查看感谢Michael的快速响应,我已复制了您的代码,但出现此错误
当前上下文中不存在名称“GetHtmlFromURL”
。我在同一个类中复制了
GetHtmlFromURL
方法,但不明白为什么会出现此错误。有什么想法吗?我需要看更多的代码来告诉你。用您当前拥有的内容更新您的问题。
/mypartial
是方法名称还是url?我如何调用
HtmlHelper
方法将是部分视图的路径amit:为了计算,上面的代码建议我将数据添加到
模型中
,然后将该
模型
作为参数传递?这是模型名吗?这是将视图传递为null的模型名