У меня есть несколько кнопок на странице. Каждая кнопка загружает отдельное частичное «представление» и использует метод jQuery .load ().
Это прекрасно работает, но я заметил, что, если я продолжаю нажимать на эту конкретную кнопку, он продолжает загружать частичный вид снова и снова, пока я не остановлюсь. Я уверен, что в итоге смогу вывести сайт из строя (ничего хорошего!).
Я пытался его кешировать (путем украшения метода и длительности контроллера и т. Д.), Но это не сработало Я подозреваю, что это потому, что я загружаю это представление нажатием кнопки.
Как я могу предотвратить повторение загрузки этого «представления», даже не подозревая об этом пользователя?
Это мой jQuery / Javascript:
//"Select Area" button - click event
$(".btnAreaDiv .btn-myClass").click(function () {
switch (this.id) {
case "btnMyButton":
$('#myDiv').load('_MyPartialView'); //to-do: only load me, if I haven't been loaded?
break;
//more code etc., more button handling
}
}
Это содержимое _MyPartialView.cshtml:
@{
Layout = null;
}
<div class="row">
<div class="col-md-6">
<div class="row" style="width:97%">
<div class="col-md-12" style="border:2px solid #c5c5c5"><span id="lblMySelector">My Selector</span></div>
</div>
</div>
<div class="col-md-6"></div>
</div>
<div class="row nopadding checkboxDiv mySelector">
<div class="col-md-12 nopadding">
<input id="myCheckBox" type="checkbox" /><label for="myCheckBox">Include all/label> <br />
</div>
</div>
И, конечно, метод ActionResult в моем контроллере:
public ActionResult _MyPartialView()
{
return View();
}
Я пробовал это, но это не сработало:
switch (this.id) {
case "btnMyButton":
if (!$('#lblMySelector').length) {
console.log('label not found', $('#lblMySelector').length);
$('#myDiv').load('_MyPartialView');
}
break;