計算に時間がかかる操作が時々あります。操作の計算中に、すべてを覆う一種の灰色のレイヤーやロード画面などを表示できるようにしたいと考えています。しかし、私は率直に言って、それを行う方法がわかりません。
私は MVC4 を使用して MVC アプリを構築しています。私は jQuery から始めて、あらゆる提案を受け入れています。どうすればそれを行うことができますか?
編集
これが私が構築しているページのサンプルです。
<h2>Load cards</h2>
<script type="text/javascript">
$(document).ready(function () {
$("form").submit(function (event) {
event.preventDefault();
alert("event prevented"); // Code goes here
//display loading
$("#loadingDialog").dialog("open");
alert("dialog opened"); // Never reaches here.
$.ajax({
type: $('#myForm').attr('method'),
url: $('#myForm').attr('action'),
data: $('#myForm').serialize(),
accept: 'application/json',
dataType: "json",
error: function (xhr, status, error) {
//handle error
$("#loadingDialog").dialog("close");
},
success: function (response) {
$("#loadingDialog").dialog("close");
}
});
alert("ajax mode ended");
});
});
</script>
@using (Html.BeginForm())
{
<div class="formStyle">
<div class="defaultBaseStyle bigFontSize">
<label>
Select a Set to import from:
</label>
</div>
<div class="defaultBaseStyle baseFontSize">
Set: @Html.DropDownList("_setName", "--- Select a Set")<br/>
</div>
<div id="buttonField" class="formStyle">
<input type="submit" value="Create List" name="_submitButton" class="createList"/><br/>
</div>
</div>
}
これが私のjavascriptファイルからのコードのスニペットです:
$(document).ready(function ()
{
$(".createList").click(function() {
return confirm("The process of creating all the cards takes some time. " +
"Do you wish to proceed?");
});
}
おまけとして(必須ではありませんが)、できればユーザー確認後に表示してほしいです。そうでなければ、このコードを置き換えてもかまいません。
編集
以下のRobの提案に従って、これが私のコントローラーメソッドです。
[HttpPost]
public JsonResult LoadCards(string _submitButton, string _cardSetName)
{
return Json(true);
}
そして、これが「古い」 ActionResult メソッドです。
[HttpPost]
public ActionResult LoadCards(string _submitButton, string _setName)
{
// Do Work
PopulateCardSetDDL();
return View();
}
現時点では、コードが Json メソッドに到達することはありません。そこにある ajax メソッドに入ります (更新されたコードを参照) が、これを機能させる方法がわかりません。