2

「メインビュー」のボタンをクリックして、部分ビューを独自に入力したいと思います。更新しました

私は主な見解を持っています:

 @{
using (Ajax.BeginForm("PastClaims", "Claim", FormMethod.Post, new AjaxOptions { UpdateTargetId = "update_panel", InsertionMode = InsertionMode.Replace }, new { @class = "form-horizontal" }))
{
    <legend>Submit a Claim</legend>
    @Html.EditorForModel()
    <div class="controls">
        <input id="btnCheckForClaims" type="submit" class="btn btn-primary" value="Submit Claim" />
    </div>


    }

送信ボタンをクリックしてから、この別のビューを表示する必要があります。以下を実行すると、初期ロードのページにdivが表示されます。

 <div id="update_panel">@Html.Partial("PastClaims")</div>

divを空白のままにすると、新しい部分ビューが表示されます。

  <div id="update_panel"></div>

ダリンが提案したように、それらをnullのままにすると:

using (Ajax.BeginForm("PastClaims", "Claim", FormMethod.Post, new AjaxOptions { UpdateTargetId = "update_panel", InsertionMode = InsertionMode.Replace }, new { @class = "form-horizontal" }))

同じページ(必要なもの)にリダイレクトされますが、追加の部分ビューが表示されません。

ここまで私を連れて行ってくれた以下のダリンに感謝します。

4

2 に答える 2

5

Ajax.BeginFormこの場合、を使用できます。

@using (Ajax.BeginForm(null, null, new AjaxOptions { UpdateTargetId = "update_panel", InsertionMode = InsertionMode.Replace }, new { @class = "form-horizontal"}))
{
    @Html.EditorForModel()
    <div class="controls">
        <input id="btnOpenPartialView" type="submit" class="btn btn-primary" value="OpenPartialView" />
    </div>
}

<div id="update_panel">
    @Html.Partial("PartialView")
</div>

次に、対応するコントローラーアクションが部分ビューを返します。

[HttpPost]
public ActionResult SomeAction() 
{
    // some processing ...
    return PartialView("PartialView");
}

ヘルパーが作業するには、スクリプトAjax.*を含めることを忘れないでください。jquery.unobtrusive-ajax.js

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
于 2012-09-21T15:22:50.347 に答える
0

@Html.Partialはサーバーコードです。送信後に部分的にロードする場合は、次のことを試してください。

$("form").on('submit', function(event){
    event.preventDefault();
    var form = $(this);

    $.ajax({
       url: form.attr('action'),
       type: form.attr('method'),
       data: form.serialize(),
       success: function(r) {
           $('#update_panel').html(r);
       }
    });
});
于 2012-09-21T15:25:12.290 に答える