[英]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.