2

私の問題:

まず、ユーザーが基準を入力すると、リクエストが適切なコントローラーのインデックス アクションに送信される検索フォームがあります。ユーザー入力は、データを保持するためだけに作成したモデル タイプとして渡されます。ビューにモデルを返し、ビューがレンダリングされる直前に、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
    }
4

4 に答える 4

1

ko.toJS(self.options.formModel())を使用してobservableArrayをjsonオブジェクトに変換します

于 2013-02-22T05:04:06.280 に答える
1

使ってみてください:-

$.ajax({
    type: 'POST',
    url: Url,
    data: ko.toJSON({ sortByText: selectedText, formModel: self.options.formModel }),
    dataType: "json"
  })

第二に、文脈から外れているように聞こえるかもしれません:-
あなたの SearchFormModel は

[JsonObject(MemberSerialization.OptIn)]
public class SearchFormModel 
{

    [JsonProperty("id")]
    public string Id{ get; set; }

}

または、モデルクラスに sortByText を含めることもできます:-

[JsonObject(MemberSerialization.OptIn)]
public class SearchFormModel 
{

    [JsonProperty("id")]
    public string Id{ get; set; }
    [JsonProperty("sortByText ")]
    public string SortByText { get; set; }

}

あなたのAJAXは次のようになります:-

    $.ajax({
    type: 'POST',
    url: Url,
    data: ko.toJSON(self.options.formModel),
    dataType: "json"
  })

私が間違った方向に進んでいないことを願っています。

于 2013-02-22T05:45:50.593 に答える
1

シリアル化された Form オブジェクトからデータを抽出する必要がある場合があります。コードで利用可能なこれに関する投稿があります。あなたが探している部分は、「POSTデータの問題」と題された中ほどの部分です。

于 2013-02-25T14:45:25.857 に答える
0

オブジェクトを渡す代わりに文字列と整数を渡すことになりましたが、機能しませんでした。

于 2013-02-24T04:31:56.853 に答える