如何将通过AJAX收到的数据传递给ASP MVC部分视图?

时间:2016-08-13 12:21:46

标签: javascript jquery asp.net ajax asp.net-mvc

我想要实现的是更新包含部分视图的页面的某些部分。我这样做的尝试如下:

        $.ajax({
        type: 'GET',
        url: actionUrl,
        success: function (data) {
            $("#results").html(""); 
            $("#results").append(@Html.Partial("_FirstPartial", data.FirstDataSet));
            $("#results").append(@Html.Partial("_SecondPartial", data.SecondDataSet));    
            }
        });

当然我无法将JS变量传递给ASP MVC这样的方法,所以我怎么能这样做?或者可能有一种完全不同的,更好的方法来更新页面?

2 个答案:

答案 0 :(得分:2)

查看(Javascript):

$.ajax({
    type: 'GET',
    url: actionUrl,
    success: function (data) {
        $("#results").html(""); 
        $.post('@Url.Action ("FirstPartial")',{data:data.FirstDataSet},function(ret){
            $("#results").append(ret);
            $.post('@Url.Action ("SecondPartial")',{data:data.SecondDataSet},function(ret2){
                $("#results").append(ret2);
            }
        }
    }
});

控制器:

public ActionResult FirstPartial(string data)
{
    return PartialView("_FirstPartial", data);
}
public ActionResult SecondPartial(string data)
{
    return PartialView("_SecondPartial", data);
}

您需要使用部分操作(返回部分视图)。在javascript中,获取数据集之后,您调用另一个部分操作来呈现数据集。

我嵌套了两个ajax调用来渲染第一个视图下面的第二个视图。如果删除嵌套,则第二个可以在第一个嵌套之前渲染。

答案 1 :(得分:0)

在你的控制器方法中输入你想要的部分,然后在你的Index.cshtml文件中做这样的事情:

<script>
  var Services = {
    linkToPartial: '@Url.Action('MethodName', 'Controller')'
  }
</script>

此代码将提供一个操作链接,您可以在$ ajax成功方法中使用该链接并提供参数。

$("#results").html("");
$.ajax({
  method: 'GET',
  url: Services.linkToPartial,
  data: {
    argumentName: data.FirstDataSet
  }
}).done(function (html) {
  $('#results').append(html);
});