【发布时间】:2013-07-19 00:29:15
【问题描述】:
有时我的操作需要一段时间来计算。我希望能够在操作计算时显示一些东西,比如一种覆盖一切的灰色层,或者一个加载屏幕。但坦率地说,我不知道该怎么做。
我正在使用 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 文件中的一个 sn-p 代码:
$(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 方法(请参阅更新的代码),但我不知道如何解决这个问题。
【问题讨论】:
-
我喜欢 jQuery 的 BlockUI 插件。演示中的“无消息阻止”可能对您有用。
-
你是如何发布到服务器的? jQuery AJAX 还是只是一个普通的表单帖子?
-
我只需要向用户显示一些内容,告诉他“嘿,等等,它正在加载”,同时执行下面的操作。
-
最好的方法是使用 jQuery 的 $.ajax() 方法来发布到服务器。您可以连接一个 javascript 函数,以便在发布之前和发布之后调用。这样您就可以显示/隐藏“加载”模式或状态消息。我看看能不能给你找个好例子。
标签: c# asp.net-mvc