Jquery 将json结果发送到mvc视图

Jquery 将json结果发送到mvc视图,jquery,json,asp.net-mvc,Jquery,Json,Asp.net Mvc,我正在将用户请求从mvc视图发送到控制器,经过一些处理后,将结果作为json对象发送回视图。 我当前的解决方案正在工作,但我希望在视图端呈现html元素,而不是在js函数中(现在是这样) 函数GetTabData(扩展数据){ $.ajax({ url:('/Home/GetData'), 键入:“POST”, contentType:'应用程序/json', 数据:JSON.stringify({id:xdata}), 成功:功能(结果){ var数据=null; 数据收集 数据+=' ...

我正在将用户请求从mvc视图发送到控制器,经过一些处理后,将结果作为json对象发送回视图。 我当前的解决方案正在工作,但我希望在视图端呈现html元素,而不是在js函数中(现在是这样)

函数GetTabData(扩展数据){ $.ajax({ url:('/Home/GetData'), 键入:“POST”, contentType:'应用程序/json', 数据:JSON.stringify({id:xdata}), 成功:功能(结果){ var数据=null; 数据收集 数据+=' .... }
因此,我想删除所有这些div和其他html元素,发送纯数据并在视图上格式化,我如何才能做到这一点?

那么,让控制器操作返回一个
PartialView
,其中包含准备使用的html片段,而不是JsonResult:

public ActionResult GetData()
{
    MyViewModel model = ...
    return PartialView(model);
}
现在,您只需在成功回调中使用jQuery函数:

success: function (data) {
    $('#someContainingDiv').html(data);
}
然后,您将拥有一个相应的局部视图(
~/Views/Home/GetData.cshtml
),该视图将被强类型化为视图模型,并呈现相应的HTML:

@model MyViewModel
<div class="list-products clearfix">
@Html.ActionLink("click me", "MyData", "Home", new { id = Mode.Id }, null)
...
@model MyViewModel
@ActionLink(“单击我”,“我的数据”,“主页”,新建{id=Mode.id},null)
...
如您所见,这允许您使用HTML帮助程序来生成正确的标记和URL,而在您最初的示例中,您在锚定标记中硬编码URL,如
/Home/MyData
,这确实是一件非常糟糕的事情

您应该在从AJAX请求调用的CONTORLER操作发送的纯JSON数据和发送包含标记的部分视图之间找到平衡。如果您发现自己在AJAX成功回调中使用了大量字符串连接来构建一些HTML标记,那么您可能应该将服务器端切换为gic直接返回所需的HTML。

GetTabData()应接受另一个参数以允许回调函数。
@model MyViewModel
<div class="list-products clearfix">
@Html.ActionLink("click me", "MyData", "Home", new { id = Mode.Id }, null)
...