この質問 をチェックし、最初の問題を解決しました。しかし、ユーザーがリンクをクリックしたときにのみ部分ビューをレンダリングしたくはありません。ページがロードされるときに部分ビューをレンダリングし、場合によっては、部分ビューのロード中に進行状況インジケーターを表示します。
それを達成する方法は?
これを読んでくれてありがとう。
ページをロードし、次に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);
}
});
});
コントローラ
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>
@Html.Partial(...)
と書くことで、最初のページでレンダリングできます。