0

インデックス、PersonモデルのGETCreateおよびPOSTCreateアクションがあります。インデックスを親ビューに表示するので、ChildActionと呼ばれます。

私ができるようにしたいのは、同じ親ビューまたはインデックスビューでGET Create asaChildActionを呼び出すことです。次に、作成フォームが送信されたら、インデックスを更新します。

これを実装するにはどうすればよいですか?私はAjax.BeginFormを使用してこれをいじっていますが、Createアクションに複数回投稿されているようですので、私の試みには欠陥があると思います。私の主な問題は、POSTの作成が成功したときにインデックスアクションを更新することです。POSTリターンを作成する必要がありますか?

すべてのヘルプとアドバイスに感謝します。

4

2 に答える 2

1

私はあなたの問題を正確に理解したかどうかわかりませんが、成功を使用するのが好きなように役立つと思います: function(data){ ... some code ...} ここでもう1つの属性も使用する必要があります

onComplete : 関数 (データ){ ... いくつかのコード ...}

ajax呼び出しが完了した後に実行したいコードを書くだけです。ただし、完全な関数で記述します

于 2012-10-04T13:25:11.133 に答える
0

これを設定する方法は次のとおりです。

public class HomeController : Controller
{
    public ActionResult MainAction()
    {
        return View();
    }

    [ChildActionOnly]
    public ActionResult Index()
    {
        return PartialView();
    }

    [ChildActionOnly]
    public ActionResult Create()
    {
        return PartialView();
    }

    [HttpPost]
    public ActionResult ProcessCreate(SomeViewModel model)
    {
        return PartialView("Index");
    }
}

および対応するビュー:

~/Views/Home/MainAction.cshtml:

<div>
    This is the main view
</div>

<div id="indexContainer">
    @{Html.RenderAction("Index");}
</div>

~/Views/Home/Index.cshtml:

<div>
    This is the index view @DateTime.Now.ToLongTimeString()
</div>

<div>
    @{Html.RenderAction("Create");}
</div>

~/Views/Home/Create.cshtml:

@using (Ajax.BeginForm("ProcessCreate", "Home", new AjaxOptions { UpdateTargetId = "indexContainer" }))
{
    <button type="submit">OK</button>
}

jquery.unobtrusive-ajax.min.jsまた、Ajax.* ヘルパーが機能するためのスクリプトを含めることも忘れないでください。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

Create POST アクションの名前を変更したことに気付くでしょう。そうしないと、フォームのポストバック後に Html.RenderAction ヘルパーが呼び出されると、POST アクションが再度実行され、無限ループに陥ってしまうからです。

于 2012-10-04T13:17:42.490 に答える