Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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# 呼叫控制器';s PartialViewResult来自代码并呈现为字符串_C#_Asp.net Mvc_Razor_Controller - Fatal编程技术网

C# 呼叫控制器';s PartialViewResult来自代码并呈现为字符串

C# 呼叫控制器';s PartialViewResult来自代码并呈现为字符串,c#,asp.net-mvc,razor,controller,C#,Asp.net Mvc,Razor,Controller,是否有一种方法可以从代码调用控制器的ParitalViewResult,并将整个视图作为字符串返回。我希望通过数据库中的信息调用此控制器和操作,不要硬编码控制器调用,尽可能动态 例如,我有一个带有以下内容的TestscController(代码不完整,只是一个占位符): 我有一个ViewExtension,它可以将视图呈现为字符串,但它从来不会出现在TestsController的屏幕上。它只运行.cshtml 我可以称之为: strView = PartialView("~/Views/Tes

是否有一种方法可以从代码调用控制器的
ParitalViewResult
,并将整个视图作为字符串返回。我希望通过数据库中的信息调用此控制器和操作,不要硬编码控制器调用,尽可能动态

例如,我有一个带有以下内容的
TestscController
(代码不完整,只是一个占位符):

我有一个ViewExtension,它可以将视图呈现为字符串,但它从来不会出现在
TestsController
的屏幕上。它只运行
.cshtml

我可以称之为:

strView = PartialView("~/Views/Tests/_Display.cshtml", model).RenderToString();
使用此ViewExtension(工作正常,但不影响控制器:

public static string RenderToString(this PartialViewResult partialView)
{
    var httpContext = HttpContext.Current;

    if (httpContext == null)
    {
        throw new NotSupportedException("An HTTP context is required to render the partial view to a string");
    }

    var controllerName = httpContext.Request.RequestContext.RouteData.Values["controller"].ToString();

    var controller = (ControllerBase)ControllerBuilder.Current.GetControllerFactory().CreateController(httpContext.Request.RequestContext, controllerName);

    var controllerContext = new ControllerContext(httpContext.Request.RequestContext, controller);

    var view = ViewEngines.Engines.FindPartialView(controllerContext, partialView.ViewName).View;

    var sb = new StringBuilder();

    using (var sw = new StringWriter(sb))
    {
        using (var tw = new HtmlTextWriter(sw))
        {
            view.Render(new ViewContext(controllerContext, view, partialView.ViewData, partialView.TempData, tw), tw);
        }
    }

    return sb.ToString();
}

请告诉我是否可以提供其他详细信息。

不确定您的意思。您的意思是:
var c=new TestscController();c._Display();
?为什么需要将局部视图渲染为字符串?可能是
public static string RenderToString(this PartialViewResult partialView)
{
    var httpContext = HttpContext.Current;

    if (httpContext == null)
    {
        throw new NotSupportedException("An HTTP context is required to render the partial view to a string");
    }

    var controllerName = httpContext.Request.RequestContext.RouteData.Values["controller"].ToString();

    var controller = (ControllerBase)ControllerBuilder.Current.GetControllerFactory().CreateController(httpContext.Request.RequestContext, controllerName);

    var controllerContext = new ControllerContext(httpContext.Request.RequestContext, controller);

    var view = ViewEngines.Engines.FindPartialView(controllerContext, partialView.ViewName).View;

    var sb = new StringBuilder();

    using (var sw = new StringWriter(sb))
    {
        using (var tw = new HtmlTextWriter(sw))
        {
            view.Render(new ViewContext(controllerContext, view, partialView.ViewData, partialView.TempData, tw), tw);
        }
    }

    return sb.ToString();
}