【问题标题】:Passing data from Ajax into partial view将数据从 Ajax 传递到局部视图
【发布时间】:2011-07-15 10:25:51
【问题描述】:

我有一个局部视图,当用户单击一个按钮时,一些数据被传递到数据库并返回结果。结果必须显示在另一个局部视图中。使用以下Controller方法和Ajax脚本获得结果:

 public ActionResult GetResultData(Models.SelectedFilterValues selectedFilters)
    {
        resultData = resultRepository.GetResultData(
            selectedFilters.Projects,
            selectedFilters.ExperimentTypes,
            selectedFilters.StudySet,
            selectedFilters.Species,
            selectedFilters.Strain,
            selectedFilters.Department,
            selectedFilters.Location);

        return PartialView("Results", resultData);
    }

function GetResultData(selectedProjects, selectedExperiments, selectedStudySets, selectedDepartments, selectedLocations, selectedSpecies, selectedStrain) {
$.ajax({
    type: "GET",
    url: "/Search/GetResultData",
    data: { projects: selectedProjects, experimentTypes: selectedExperiments, studySet: selectedStudySets,
        department: selectedDepartments, location: selectedLocations, species: selectedSpecies, strain: selectedStrain
    },
    error: function (data) {

    },
    success: function (data) {

    }
});

}

当数据返回到 Ajax 方法时,我一直收到错误,这是因为它返回的是部分视图吗?我想要的是让 Ajax 方法接受数据,然后让我将该数据传递到新的局部视图中。这可能吗?

谢谢。

【问题讨论】:

    标签: asp.net ajax asp.net-mvc-3


    【解决方案1】:

    我认为您混淆了客户端和服务器端逻辑。

    局部视图可以包含在服务器上执行的逻辑。通常你会在 Controller 中执行业务逻辑,在 PartialView 中执行 UI 逻辑。例如,任何使用 Razor 的标记实际上都是在服务器上执行的。然后结果是发送到浏览器的 HTML。

    此 HTML 可能包含客户端 (JavaScript) 代码。所以通常你会创建一个包含调用 jQuery 方法(如 $.ajax())的 JavaScript 代码的 PartialView。当它这样做时,JavaScript 如何到达浏览器就不再重要了——作为 PartialView 的一部分,这并不重要。 JS代码在客户端执行,在服务端调用逻辑。

    当 Ajax 调用将数据返回到客户端时,那里的 JS 代码可以将数据呈现到网格中,或者应用 jQuery 模板,或者对其进行任何操作。它不能做的是执行服务器端的 PartialView 代码,因为任何 PartialView 早就执行了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多