私の問題:
まず、ユーザーが基準を入力すると、リクエストが適切なコントローラーのインデックス アクションに送信される検索フォームがあります。ユーザー入力は、データを保持するためだけに作成したモデル タイプとして渡されます。ビューにモデルを返し、ビューがレンダリングされる直前に、jquery を使用してビュー モデル データを取得し、knockout.js/ajax で「データ」を jsonresult アクションに投稿し、そこで検索フィルタリングが行われ、更新します。 json データとノックアウト データ バインディングを使用したビュー。
私の jsonresult アクションは、テーブルの並べ替えと ViewModel のために文字列 sortByText(works) を受け取ります。しかし、ajax 呼び出しが発生すると、jsonresult アクションはデータ オブジェクトが渡した値を認識しません。
「SearchFormModel」を JSONresult アクションに正しく渡すにはどうすればよいですか?
AJAX
「self.options.formModel」には、Index アクションによって送信されたデータが保持されます。デバッグ中に、データがあることがわかりますが、次のステップでjsonresultアクションに投稿されず、sortByTextのみに投稿されます。ajax 'data:' は文字列と int のみを認識できますか?
$.ajax({
type: 'POST',
url: Url,
data: { sortByText: selectedText, formModel: self.options.formModel },
dataType: "json"
})....etc
コントローラ
[HttpGet]
public ActionResult Index(string sortByText, SearchFormModel formModel)
{
var model = new SearchViewModel();
model.FormModel = formModel;
return View(model);
}
[HttpPost]
public JsonResult GetData(string sortByText, SearchFormModel formModel)
{
//return jsonData
}