我的控制器中有一个像这样的方法
public string UpdateResource()
{
Thread.Sleep(2000);
return string.Format("Current time is {0}", DateTime.Now.ToShortTimeString());
}
我的视图页面中有一个html按钮,当我点击它时,我想要一个加载的gif图像出现,然后在2000ms后消失。以下是我的HTML
<input type="button" id="btnUpdate" value="Update" />
<img id="loading" src="/Images/ajax-loader.gif" alt="Updating ..." />
<div id="result"></div>
如何调用控制器方法。我看过Html.ActionLink
,但我希望按钮点击而不是超链接。
请帮忙
答案 0 :(得分:5)
首先更改为UpdateResource
方法。现在它返回ActionResult:
public ActionResult UpdateResource()
{
Thread.Sleep(5000);
return Content(string.Format("Current time is {0}", DateTime.Now.ToShortTimeString()));
}
我们必须在加载文档时隐藏图像,因此我们将图像标记更改为:
<img id="loading" src="../../Content/progress.gif" alt="Updating ..." style="display: none;" />
我们添加了style="display:none"
。
然后我们使用jQuery:
<script type="text/javascript">
$(document).ready(
function() {
$('#btnUpdate').click(
function() {
$('#loading').show();
$.get('<%= Url.Action("UpdateResource") %>', {},
function(data) {
$('#result').html(data);
$('#loading').hide();
});
}
);
}
);
</script>
加载文档后,我们将点击操作设置为您的按钮。它显示进度,然后使用ajax获取ActionResult。当ActionResult返回时,我们隐藏进度并使用返回的数据设置#result div的内容。