asp.net mvc ajaxでhtmlを取得し、部分ビューに返す

お疲れ様です。
気が付けばもう9月ですね。
8月は自分が推しているIVEがカムバしました。
新曲もMV含めめっちゃいいです。
余談終わり。

ということで、
今回は業務で非同期通信でデータベースから取得した値をViewに反映させる処理を使用したので
そのことについて書きたいと思います。

asp.net mvc のviewには部分ビューというものが存在します。
今回はその部分ビューに取得したデータを渡し、部分ビューのみを更新してあげることにより
非同期で行うように実装しました。

@Html.Partial("~/Views/Test/IndexList.cshtml", @Model)

部分ビューの呼び出しは上記通りです。
第一引数に呼び出すビューのパス、第2引数にModelを渡しています。
この@Modelの中にはテーブルから取得した値が格納されており、部分ビューでそれを展開し、表示します。
jsファイル側の処理ですが、

$.ajax({
    url: url,
  type: 'post',            
    dataType: 'html',
    data: {        
      sortType: sortType,
      searchWord: word
           }
      }).done(function (result) {
        $('.target-list').empty();
        $('.target-list').html(result);
      })

のようになっています。
urlにはアクション先のURLが指定されています。
dataにはソート順と検索キーワードを渡しています。
コントローラー側です

public ActionResult SortIndex(RequestTestModel req)
{
   using (var context = new ApplicationDbContext())
   {
      List<TestModel> query = new List<TestModel>();

      query = req.sortType == "asc" ? context.Tests.OrderBy(x => x.create_datetime).ToList() : context.Tests.OrderByDescending(x => x.create_datetime).ToList();
      if (query.Count() == 0)
      {
         return View("IndexList");
      }


      return View("IndexList", query);
    }
}

引数にdataの値が格納されておりその値を使用し、データを昇順か降順で取得するという処理を行っています。
return Viewには第一引数に部分ビューであるIndexListをしていし、第二引数にはqueryオブジェクトを指定します。
ここで注意しないとならないことは、return先はビューではなくjs側であることです。
ajax通信に成功すると戻り値はdone内の引数に格納されます。(今回の場合はresultに格納)
resultの中身はrequestする際にhtmlと指定しているのでhtmlが返ります。
今回は.targetList以下の要素を一度削除し、返ってきたhtmlを描画することで、非同期処理で値を更新しています。
正直、ajaxでせず、async awaitを使用したほうがいいと思いますが、一応残しておきます。
おしまい。