0

に問題がありAjax submitます。ViewをレンダリングするメインがPartialViewあり、最後のメインの中に別の をロードしますPartialView。このようなもの:

  • メインビュー

    • 要素のリスト -> PartialView1

      • 新しい要素を作成 -> 1PartialViewの中に 2PartialView

私はAjaxBeginForm置換および更新オプションを使用しています:

 @using (Ajax.BeginForm("Create", "MyController", 
      new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))

私の問題は、送信が初めて非常にうまく機能することです。新しい要素を保存し、1 を再レンダリングしPartialViewます (リストを更新します)。再度送信する場合は、PartialView1 にリダイレクトされます。

なぜそれが起こっているのですか?私のコードでは何が問題なのですか? どうすればできますか?

これが私のコントローラーアクションです:

    [HttpPost]
    public PartialViewResult Create(Model viewModel)
    {
        viewModel.Save(viewModel.FormModel);

        var newViewModel = new DefaultViewModel(viewModel.xID,viewModel.yID);

        return PartialView("_DefaultPartialView", newViewModel);

    }

私のアクションはPartialView?を返します。タイプである必要がありJsonResultます ?

そしてPartialView1

@using (Ajax.BeginForm("CreateBehaviorLog", "BehaviorLog", new AjaxOptions {    InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))
{

@model DefaultViewModel

@Scripts.Render("~/bundles/jquery")

<h2>Title</h2>

 { Html.RenderPartial("PartialView2",    Model.ModelForPartialView2); }

<div id="listOfELements">

 @foreach(var item in Model.X)
  {
     --list--
  }  
</div>
}

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

アップデート:

これを修正しました(これは非常に初心者の間違いでした)。明日、答えを投稿します。今はちょっと遅くて、寝る必要があるからです!

4

1 に答える 1

3

したがって、まず第一に、Ajax 呼び出しを行うときは、必要なものがすべて含まれていることを確認してください。ここで私は意味します:

  • 必ず<add key="UnobtrusiveJavaScriptEnabled" value="true"/>webconfig に含めてください。

  • ページにスクリプトが含まれていることを確認してください。

  • 最新のものを使用している場合は、で機能jQueryを変更する必要があります。liveonunobtrusive script

ところで、上記の問題がある場合は、私が最初に行ったことを次に示します (あまり良い解決策ではないため、現在は変更されています)。

 MainView

 @using (Ajax.BeginForm("Create", "MyController", 
  new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))
    {
     RenderPartial1

         RenderPartial1.2
     }


     RenderPartial2
     ..
     RenderPartialN

ご覧のとおり、私は をAjaxBeginFormの外側にPartial1.2置きsubmitましたMainView。この方法はあまり良くありませんでした。なぜなら、2 つのフォームが必要な場合はどうすればよいのでしょうか?

結局、私は使用をやめ、 fromAjaxBeginFormで使用HtmlBeginFormしました。ajax postjavascript

于 2013-02-19T07:59:41.253 に答える