将数据从Ajax传递到局部视图

时间:2011-07-15 10:25:51

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

我有一个部分视图,当用户单击按钮时,会将一些数据传递给数据库并返回结果。结果必须显示在另一个局部视图中。使用以下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方法接受数据,然后让我将数据传递到新的局部视图。这可能吗?

感谢。

1 个答案:

答案 0 :(得分:2)

我认为你正在混淆客户端和服务器端逻辑。

部分视图可以包含在服务器上执行的逻辑。通常,您将在Controller中执行业务逻辑,并在PartialView中执行UI逻辑。例如,任何使用Razor的标记实际上都是在服务器上执行的。结果就是HTML,它被发送到浏览器。

此HTML可能包含客户端(JavaScript)代码。所以通常你会创建一个PartialView,它包含调用jQuery方法的JavaScript代码,例如$ .ajax()。当它发生时,JavaScript到达浏览器的方式并不重要 - 作为PartialView的一部分,无关紧要。 JS代码在客户端执行,它在服务器端调用逻辑。

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

相关问题