我有一个使用knockoutjs的asp.net MVC5应用程序。
我遇到了问题"刷新"按钮位于下一页:
按钮单击绑定到以下ajax请求:
self.get = function () {
$loadingIndicator.show();
$.ajax({
url: BASE_URL + 'APInvoicesSummary/GetRecords',
type: 'get',
data: {
'cache': false,
'page': self.pagingOptions.currentPage(),
'pageSize': self.pagingOptions.pageSize(),
'filter': self.filterOptions.filterText == undefined ? '' : self.filterOptions.filterText(),
'sort': self.sortInfo().column.field + ' ' + self.sortInfo().direction
},
contentType: 'application/json; charset=utf-8',
success: function (data) {
self.pagingOptions.totalServerItems(data.RecCount);
var recsArray = [];
$.each(data.PageOfRecords, function (key, value) {
recsArray.push(
new rec(
moment(value.DateReceived).format('DD/MM/YYYY HH:mm ss'),
value.BatchRef,
value.Control_NumOfItems,
Math.round(value.Control_Value * 100) / 100,
value.Control_LinkToArchive,
value.Rejected_NumOfItems,
value.Rejected_Value,
value.Accepted_NumOfItems,
Math.round(value.Accepted_Value *100) / 100,
value.RejectedLineNumbers,
value.LinkToEditBatch
)
);
});
self.recs(recsArray);
}
});
这是绑定:
<div id="Refresh">
<button type="button" class="btn btn-default btn-md refresh-button" data-bind="click: get">
<span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Refresh
</button>
</div>
Chrome的一切正常,但在IE11中运行时,单击按钮无效,除非F12开发工具处于打开状态 - 然后才能正常工作。我可以在提琴手中看到,如果没有开启Dev Tools,就不会有任何请求。
任何想法?
我已经在其他地方读到这可以归结为javascript中的console.log代码但是我已经完成了搜索并且找不到任何内容。
答案 0 :(得分:1)
我创建了以下自定义ActionFilterAttribute
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
}
然后我装饰了包含我的KnockoutJS正在进行Ajax调用的动作的控制器类:
[NoCache]
public class APInvoicesSummaryController : APInvoicesBaseController
{