繁体   English   中英

将HTML表从控制器传递到MVC视图

[英]Passing HTML Table to MVC View from controller

我有一个MVC应用程序,我想使用json将控制器中的html表传递给视图。

我在这个网站上找到了这个问答: 通过JSON发送HTML代码推荐使用json_encode,但它适用于PHP而我正在使用C#...

如何使用Json传递HTML表?

目前我试过:

return Json(MyHTMLTable);

在我看来:

<script type="text/javascript">
$(document).ready(function () {
    $.ajax({
        url: '@Url.Action("GetTable","MyPages")',
        type: 'POST',
        success: function (result) { $('#ph').html(result.responseText); },
        error: function (result) {
            $('#err').html(result.responseText);
        }
    })
});

(ph是div)

我收到以下错误: 序列化“System.Web.UI.WebControls.TableRow”类型的对象时检测到循环引用。

更改您的ajax以删除@URL.Action

$.ajax({
    url: 'MyPages/GetTable',
    type: 'POST',
    success: function (result) { $('#ph').html(result.responseText); },
    error: function (result) {
        $('#err').html(result.responseText);
    }
})

在你的ActionResult()返回一个PartialView()

在你的部分视图中,这个例子中的TableHtml将是你的html

public ActionResult GetTable(){

     // do something

     return PartialView("TableHtml");


}

Ajax会接受这个

但是,如果必须返回HTML,则可以包装Json

public ActionResult GetTable(){

     // do something
     String myHtml = "<div></div>;

    return Json(myHtml, JsonRequestBehaviour.AllowGet);
}

首先,不需要使用JSON将HTML表从控制器传递到视图。 JSON是一种传输字符串化数据的方式,通常是在Web服务和客户端之间传输。 它在功能上与SOAP类似。 以这种方式将数据从控制器传输到您的视图是不好的,因为您失去了通过模型传递给您的强类型。

因此,您可以做的只是将HTML表作为变量传递给视图模型中的视图。 您也可以使用ViewBag,但这种方式会失去强大的输入。 无论哪种方式,假设表是在C#中生成的,您只需要将包含HTML的字符串转换为MvcHtmlString 你这样做:

var table = MvcHtmlString.Create("<table>...");

然后将其包含在您的模型或ViewBag中。 然后,您可以在视图页面上使用经典的Razor语法将表打印到页面:

@Model.Table

要么

@ViewBag.table

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM