2011-07-15 28 views
1

ユーザーがボタンをクリックすると、一部のデータがデータベースに渡され、結果が返されるという部分的な見解があります。結果は別の部分表示で表示する必要があります。それは部分的なビューを返しているので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のスクリプトを使用して得ていますか?私が欲しいのは、Ajaxメソッドがデータを受け入れ、そのデータを新しい部分ビューに渡すことです。これは可能ですか?

ありがとうございました。

答えて

2

クライアント側とサーバー側のロジックが混在していると思います。

部分ビューには、サーバー上で実行されるロジックを含めることができます。通常、PartialViewのControllerおよびUIロジックでビジネスロジックを実行します。たとえば、Razorを使用するマークアップは、実際にサーバー上で実行されます。結果はブラウザに送られるHTMLです。

このHTMLには、クライアントサイド(JavaScript)コードが含まれている場合があります。したがって、通常は、$ .ajax()などのjQueryメソッドを呼び出すJavaScriptコードを含むPartialViewを作成します。それが問題になることはありませんが、JavaScriptがブラウザーにどのようになったかは重要ではありません.PartialViewの一部として、重要ではありません。 JSコードはクライアント側で実行され、サーバー側のロジックを呼び出します。

Ajax呼び出しがクライアント側にデータを返すとき、JSコードはデータをグリッドにレンダリングしたり、jQueryテンプレートを適用したり、必要なものを何でも実行できます。それができないのは、PartialViewが実行されてから長い間、サーバーサイドのPartialViewコードを実行することです。

関連する問題