Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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/2/jquery/89.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# 将部分视图转换为html“;“字符串”;在我的控制器中,用于json请求_C#_Jquery_Json_Asp.net Mvc 2 - Fatal编程技术网

C# 将部分视图转换为html“;“字符串”;在我的控制器中,用于json请求

C# 将部分视图转换为html“;“字符串”;在我的控制器中,用于json请求,c#,jquery,json,asp.net-mvc-2,C#,Jquery,Json,Asp.net Mvc 2,我正在发表一篇jqueryjson文章,希望以HTML的形式返回PartialView。在我的控制器中,我需要将PartialView转换成HTML 我找到了一些例子,但大多数都涉及BaseController。我的项目不允许我使用BaseController。我宁愿需要一个扩展,我可以用在控制器代替 我查看了一些代码并找到了一个示例,但是我在使用它时遇到了一些问题。我不知道如何传入我使用的当前控制器 [HttpPost] public ActionResult HtmlJsonTryout(/

我正在发表一篇jqueryjson文章,希望以HTML的形式返回PartialView。在我的控制器中,我需要将PartialView转换成HTML

我找到了一些例子,但大多数都涉及BaseController。我的项目不允许我使用BaseController。我宁愿需要一个扩展,我可以用在控制器代替

我查看了一些代码并找到了一个示例,但是我在使用它时遇到了一些问题。我不知道如何传入我使用的当前控制器

[HttpPost]
public ActionResult HtmlJsonTryout(/*passing values*/)
{
    //code here......
    if (first.CartID == 0)
    {               
        var viewData = m_cartViewDataFactory.Create();
        var miniCart = ControllerExtensionsHelper.PartialViewToString("HERE I NEED TO PASS CONTROLLER RIGHT?", "_FullCart", viewData);
        var cart = PartialView("_CartSum", viewData);

        this.Response.ContentType = "application/json";
        return Json(new
        {
            Status = "OK",
            MiniCart = miniCart,
            Cart = cart
        });
    }
}

public static class ControllerExtensionsHelper
{
    public static string PartialViewToString(this Controller controller)
    {
        return controller.PartialViewToString(null, null);
    }

    public static string RenderPartialViewToString(this Controller controller, string viewName)
    {
        return controller.PartialViewToString(viewName, null);
    }

    public static string RenderPartialViewToString(this Controller controller, object model)
    {
        return controller.PartialViewToString(null, model);
    }

    public static string PartialViewToString(this Controller controller, string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
        {
            viewName = controller.ControllerContext.RouteData.GetRequiredString("action");
        }

        controller.ViewData.Model = model;

        using (StringWriter stringWriter = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, stringWriter);
            viewResult.View.Render(viewContext, stringWriter);
            return stringWriter.GetStringBuilder().ToString();
        }
    }
}

您没有正确使用扩展方法。您可以在扩展类的实例上调用扩展方法。请阅读以下文档:


我已经阅读了“编译时绑定扩展方法”部分,因为这是我在尝试像您在示例中使用
this.PartialViewToString()时遇到的错误。有什么想法吗?错误:常量初始值设定项必须是编译时常量。我发现只有
字符串
整数
是复杂的时间常数,因此如何将其应用于控制器?代码适用于我。你肯定还有别的地方做错了。你在哪一行(我的例子)得到这个错误?行得通,没关系。我有一个
常量字符串
,我没有删除它。谢谢达林:)
[HttpPost]
public ActionResult HtmlJsonTryout(int amount)
{
    if (first.CartID == 0)
    {               
        var viewData = m_cartViewDataFactory.Create();
        string miniCart = this.PartialViewToString("_FullCart", viewData);
        string cart = this.PartialViewToString("_CartSum", viewData);

        return Json(new
        {
            Status = "OK",
            MiniCart = miniCart,
            Cart = cart
        });
    }
}