在我的布局页面中,我有这个HTML:
<div id="ajax-loading" class="global-loading-image" runat="server">
<img src="/content/travelbill/img/small-loading-image.gif"/>
</div>
哪个是加载符号。我想让它显示我的代码何时开展业务。
我在Stackoverflow上读过其他线程,如果你使用runat="server"
,你应该能够访问控制器中的div。像这样:
ajax-loading.Visible = true;
EditTravelBillViewModel model = this.travelBillService.GetTravelBill(travelBillId);
model.StageOfProcess = (int)TravelBillStageOfProcessEnum.APPROVED;
this.travelBillService.Update(model, true);
ajax-loading.Visible = false;
return RedirectToAction("GetTravelBillsPerCompany");
但是我得到的错误是当前上下文中不存在加载和ajax。我做错了什么?
答案 0 :(得分:2)
那是在旧的ASP.NET页面中。在ASP MVC中,您没有ViewState
,isPostBack
或runat="server"
,您可以使用ViewBag
和ViewData
将变量从控制器传递到视图,例如:
<强>控制器:强>
ViewBag.Name = "My Name";
ViewData["Name"] = "My Name";
查看:强>
@ViewBag.Name
@ViewData["Name"]
我认为你不需要这样做。您可以执行一项操作来执行完成所需的任务,并使用JavaScript通过AJAX请求该操作。然后,您可以使用JavaScript显示并隐藏加载:
function LoadAjax(containerId, url, params){
//Set loading in container
$(containerId).html('<img src="loading.gif" alt="loading"/>');
//Do the request
$.ajax({
type: 'POST',
dataType: "html",
url: url,
data: params,
success: function(data){
// show response inside container (removes loading)
$(containerId).html(data);
},
error: function( jqXHR, textStatus, errorThrown){
// show error inside container (removes loading)
$(containerId).html(textStatus);
}
});
}
页面加载时会显示加载图片。您将需要Jquery来使用我的代码。希望它有所帮助。