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

How to pass the data recieved via AJAX to ASP MVC partial views?

本文关键字:ASP MVC 视图 数据 AJAX      更新时间:2023-09-26

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

        $.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方法,所以我怎么能呢?或者可能有一种完全不同的,更好的方法来更新页面?

视图(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);
}

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

我嵌套了两个ajax调用,以在第一个视图下面呈现第二个视图。如果你删除嵌套,那么第二个可能会在第一个之前呈现。

在你的控制器方法中生成,它返回你想要的部分,然后在你的索引中。在CSHTML文件中添加如下内容:

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

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

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