4

ajaxを使用して部分ビューをレンダリングしたい。
ボタンを送信すると、部分ビューをレンダリングする必要があります。
ActionLinkを使用して実装することもできますが、JavaScriptでActionを呼び出したいと思います。
ただし、次のコードは機能しません。アクションが呼び出されますが、部分ビューはレンダリングされません。

意見

@section script{
<script type="text/javascript">
    function test() {
        $.ajax(
        {
            type: "POST",
            url: "Test",
            data: "",
            success: function (result) { alert("OK!!"); },
            error: function (req, status, error) {
                alert("Damn!!");}
        });


    }
</script>
}

<input type="submit" onclick="test()" />
<div id="Container">

コントローラ

public ActionResult Test()
{
    if (Request.IsAjaxRequest())
    {
        return PartialView("ViewUserControl1");
    }
    return View();
}

部分ビューViewUserControl1

Hello world

これは機能しますが、私がやりたいことではありません

@Ajax.ActionLink("click me", "Test", new AjaxOptions { UpdateTargetId = "Container" })
4

1 に答える 1

6

URLが正しくない可能性があります。Global.asaxで定義されているルーティング設定によって異なります。ただし、アクションがHomeControllerにある場合、通常、URLは「/ Home/Test」のようになります。アクションのURLを取得するには、URLヘルパーを使用することをお勧めします。

...
url: '@Url.Action("Test", "Home")'
...

次の方法でパーシャルをレンダリングできます。

...
success: function (result) { $('#elementId').html(result) },
...

また、ブロックを更新する場合は、最初にブロックをクリアすることを忘れないでください。ブロックに目立たない検証を行うフォームが含まれている場合は、フォームを解析してください。

于 2012-06-12T13:36:47.887 に答える