ASP.NET MVC可以通过jQuery UI库实现进度条(progressbar)功能。下面是实现进度条步骤的完整攻略。
步骤一:安装jQuery UI
首先,需要下载jQuery UI库。可以在jQuery UI官方网站上下载zip文件并解压缩到你的网站文件夹内,或者使用CDN方式加载。
这里使用CDN方式,在HTML页面中添加以下代码:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" integrity="sha512-uVcFseOlC8pJXDxNoLdvi9bcRTJU6VK6Uhe7GJ1gaEq5ZxWRQSS4R0K48hYfBjtNftH7i9cYEIZPaO1GhAweVQ==" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha512-NivxfGZUcr7jCfgVbL0pLz7B5YcD62cCf8amZ2xy/02A9MYdxyZ3dZkLkg+cO5EQzarGQm0wod7Lo2ZJT7eOpQ==" crossorigin="anonymous"></script>
步骤二:页面设计
通过MVC的视图(View)功能设置页面布局,添加一个显示进度条的div:
<div id="progressbar"></div>
步骤三:编写JavaScript
添加一个JavaScript文件,用来控制进度条的显示。以下示例代码实现了一个进度条从0到100的动画效果:
$(function() {
$( "#progressbar" ).progressbar({
value: false
});
function progress() {
var val = $( "#progressbar" ).progressbar( "value" ) || 0;
$( "#progressbar" ).progressbar( "value", val + 1 );
if ( val < 99 ) {
setTimeout( progress, 50 );
}
}
setTimeout(progress, 2000);
});
在上述代码中,$(function(){})
是一个jQuery的快捷方式,用于在页面加载完毕后执行JavaScript代码。
在$( "#progressbar" ).progressbar()
方法中,value: false
表示初始化进度条为0。
在progress()
函数中,每执行一次$( "#progressbar" ).progressbar( "value", val + 1 )
,进度条的值就会增加1。在每次执行progress()
后,通过setTimeout()
函数再次调用progress()
,直到进度条的值达到99。
最后,在setTimeout(progress, 2000);
中,2000ms后开始执行progress()
函数,进度条就开始了动画效果。
示例一:显示文件上传进度条
可以通过上述代码,将文件上传时的进度条加入自己的网站中。以下示例代码可以实现文件上传进度条,更好地提高网站用户体验:
<form action="http://yourserver/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file">
<br>
<div id="progressbar"></div>
<br>
<input type="submit" value="Upload" name="submit" id="submit">
</form>
在JavaScript文件中加入以下代码:
$('form').submit(function(event) {
event.preventDefault();
var formData = new FormData($('form')[0]);
$.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100;
$("#progressbar").progressbar({value: percentComplete});
}
}, false);
xhr.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total * 100;
$("#progressbar").progressbar({value: percentComplete});
}
}, false);
return xhr;
},
type: 'POST',
url: 'http://yourserver/upload',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data) {
alert('File uploaded successfully!');
}
});
});
当用户上传文件时,进度条就会显示上传进度的动画效果,提高了网站用户体验。
示例二:显示数据处理进度条
在AJAX异步请求时,页面响应速度非常快,但数据处理等过程是需要等待一段时间的。这时,我们就可以使用进度条提高用户体验。
以下示例代码可以实现AJAX异步请求时的进度条(通过加入mock异步请求模拟):
<div id="progressbar"></div>
<button id="load">Load Data</button>
<div id="results"></div>
在JavaScript文件中加入以下代码:
$("#progressbar").progressbar({value: false});
function progress() {
var val = $( "#progressbar" ).progressbar( "value" ) || 0;
$( "#progressbar" ).progressbar( "value", val + 1 );
if ( val < 99 ) {
setTimeout( progress, 50 );
}
}
$('#load').click(function(event) {
event.preventDefault();
$("#progressbar").progressbar({value: false});
// mock an async request
setTimeout(function() {
progress();
$('#results').html('<p>Data Loaded Successfully!</p>');
}, 5000);
});
当用户点击“Load Data”按钮时,进度条就会显示异步请求的动画效果,页面不会卡顿,提高了网站用户体验。
通过以上两个示例,基本实现了ASP.NET MVC使用jQuery UI库实现进度条的功能。参考本文示例,根据业务需求可以对进度条进行更多的控制。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC使用jQuery ui的progressbar实现进度条 - Python技术站