web-dev-qa-db-ja.com

ajaxを使用した部分ビューのレンダリング

この質問 をチェックし、最初の問題を解決しました。しかし、ユーザーがリンクをクリックしたときにのみ部分ビューをレンダリングしたくはありません。ページがロードされるときに部分ビューをレンダリングし、場合によっては、部分ビューのロード中に進行状況インジケーターを表示します。

それを達成する方法は?

これを読んでくれてありがとう。

20
programad

ページをロードし、次にajaxを介して部分ビューをロードする場合は、次のようなことを行うActionMethodを作成できます。

public ActionResult Create()
{
     var model = new MyModel();

     if (Request.IsAjaxRequest())
     {
          return PartialView( "_Partial", model.PartialModel );
     }
     else
     {
          return View( model );
     } 
}

そして、あなたのページで次のようなことをします:

$(function(){

    $(document).ajaxStart(function () {
        //show a progress modal of your choosing
        showProgressModal('loading');
    });
    $(document).ajaxStop(function () {
        //hide it
        hideProgressModal();
    });

    $.ajax({
          url: '/controller/create',
          dataType: 'html',
          success: function(data) {
             $('#myPartialContainer').html(data);
          }
    });
});
63
ericb

コントローラ

public ActionResult GetModule(string partialName){
    return PartialView("~/Views/Shared/"+partialName);
}

デフォルトページ(jquery ajax操作を使用)

<div id='mod1'>Loading...</div>
<script type="text/javascript">
            $("#mod1").load("/ControllerName/GetModule?partialName=test1");         
</script>
10
ebattulga

@Html.Partial(...)と書くことで、最初のページでレンダリングできます。

7
SLaks