0

Asp.net MVC を SharePoint サイトに統合しました。それはうまくいきます。ただし、デフォルトのSharepointマスターページも使用しています(~masterurl/default.masterつまり)。form問題は、すべての Sharepoint ページが通常の Asp.net WebForm ページであるのに対し、この特定のマスター ページではページ全体が要素にラップされていることです。

私の MVC コンテンツには、サーバーに送信する独自​​のform入力要素が必要です。Ajax 呼び出しは明らかにそれほど問題ではありません。元の要素$("form").serializeArray()を保持していると使用できません。formただし、送信イベントには Web フォーム機能があり、サーバーに送信されるデータが多すぎるため、通常のポストバックには問題があります。

通常のポストバックと Ajax ポストバックを使用します。主な問題は通常のポストバックです。

したがって、両方を実行する必要がある2つの可能性があります$(document).ready():

  1. フォーム要素を削除し、他のすべてのコンテンツをそのまま保持します。jQuery では、form要素の先頭に を追加しdiv、そのコンテンツをこの div に移動してから削除することを意味する可能性がありformます。
  2. form要素を に直接変更しdivます。これはおそらくブラウザ処理の面でより高速になるでしょうが、私はそれを行う方法がわかりません.

したがって、誰かが2.の解決策を詳しく説明し、これら2つの可能な解決策についていくつかの情報を提供できる場合: どちらを実行する必要があり、その理由.

編集

第三の可能性もあります。必要に応じて入力要素を作成するだけで、それらをdiv要素内に含めることができます。ユーザーがフォームを送信したい場合(フォームdivではありません)、次のことができます。

  1. 動的に呼び出す$("div.form").serializeArray()
  2. フォーム要素を作成する
  3. シリアル化された値を入力します
  4. フォームを本文に追加
  5. それを提出します。

面倒に思えますが、うまくいく可能性があります。それでも最初の 2 つの解決策はより単純に見えます。

4

1 に答える 1

1

$.ajax()経由で送信する場合は.serialize()、次のように要素を直接使用します。

$.ajax({
  url: "Path/Action",
  type: "post",
  data: $("#someContainer :input").serialize(),
  success: function(data) {
    //do something
  }
});

または短い$.post()バージョン:

$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
  //do something
});

これには、生成やその他のトリックは必要ありません<form>。通常の jQuery AJAX 投稿 (またはGET必要なもの) だけです。

于 2010-10-07T10:50:58.207 に答える