加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP MVC查看内容为JSON

发布时间:2020-12-16 00:32:43 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC应用程序与相当多的控制器操作,使用Ajax(jQuery)调用并返回部分视图内容更新屏幕的一部分。但我宁愿做的是返回JSON这样的东西。 return Json(new { Result = true,Message = "Item has been saved",Content = View("Partial") }); 哪里的HTML只
我有一个MVC应用程序与相当多的控制器操作,使用Ajax(jQuery)调用并返回部分视图内容更新屏幕的一部分。但我宁愿做的是返回JSON这样的东西。
return Json(new { 
    Result = true,Message = "Item has been saved",Content = View("Partial") 
});

哪里的HTML只是Json的一个财产。这意味着我需要检索由View方法呈现的HTML。有没有任何简单的方法来做到这一点,我看到的几个例子是相当复杂的。

编辑:这个问题最初是为ASP.NET MVC 1,但是如果版本2使我更容易听到这个答案。

解决方法

这是答案!这是从 Martin From’s方法轻微的变化,似乎工作。如果有缺失的东西,人们可以在评论部分提供任何代码更改。谢谢。

从你的控制器调用如下:

string HTMLOutput = Utils.RenderPartialToString("~/Views/Setting/IndexMain.ascx","",items,this.ControllerContext.RequestContext);

将其添加到类中

public static string RenderPartialToString(string controlName,object viewData,object model,System.Web.Routing.RequestContext viewContext)
{
     ViewDataDictionary vd = new ViewDataDictionary(viewData);
     ViewPage vp = new ViewPage { ViewData = vd };

     vp.ViewData = vd;
     vp.ViewData.Model = model;
     vp.ViewContext = new ViewContext();
     vp.Url = new UrlHelper(viewContext);

     Control control = vp.LoadControl(controlName);

     vp.Controls.Add(control);

     StringBuilder sb = new StringBuilder();

     using (StringWriter sw = new StringWriter(sb))
     using (HtmlTextWriter tw = new HtmlTextWriter(sw))
     {
         vp.RenderControl(tw);
     }

     return sb.ToString();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读