В Google Chrome не отображаются изменения в файле JavaScript
Проект C# asp net core. Использую jQuery v3.5.1 и BootStrap 4. Среда разработке Visual Studio 2019.
В проекте есть страница Edit.cshtml, к которой прописана ссылка на файл с JS-кодом:
@model voteCollector.Models.Friend
@{
ViewData["Title"] = "Edit";
}
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions {
public string GetAntiXsrfRequestToken()
{
return Xsrf.GetAndStoreTokens(Context).RequestToken;
}
}
<h4></h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="IdFriend" />
<div class="form-row">
<div class="form-group col-md-6">
<label asp-for="CityId" class="control-label"></label>
<select id="CityId" asp-for="CityId" class="form-control" asp-items="ViewBag.CityId"></select>
<span asp-validation-for="CityId" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="StreetId" class="control-label"></label>
<select id="StreetId" asp-for="StreetId" class="form-control" asp-items="ViewBag.StreetId"></select>
<span asp-validation-for="StreetId" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="HouseId" class="control-label"></label>
<select id="HouseId" asp-for="HouseId" class="form-control" asp-items="ViewBag.HouseId"></select>
<span asp-validation-for="HouseId" class="text-danger"></span>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<input type="submit" value="Сохранить" class="btn btn-primary btn-block" />
</div>
<div class="form-group col-md-6">
<a asp-action="Index" class="btn btn-secondary btn-block"><i class="fa fa-table"></i>Вернуться к списку</a>
</div>
</div>
</form>
</div>
</div>
@section Scripts {
<script type="text/javascript" src="~/js/JS_Edit_Friend.js"></script>
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Есть файл с JS-кодом для данной страницы. Изначально он содержал следующее:
//Установка текущей даты
function stateDate(idObject) {
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = yyyy + '-' + mm + '-' + dd;
document.getElementById(idObject).value = today;
}
//Автоматич установка даты голосования
function setDate(sourseidObj,idObject) {
chbox = document.getElementById(sourseidObj);
if (chbox.checked) {
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = yyyy + '-' + mm + '-' + dd;
document.getElementById(idObject).value = today;
}
else {
document.getElementById(idObject).value = null;
}
}
Потом я добавил туда код, поменял функции местами и он стал таким:
//Автоматич установка даты голосования
function setDate(sourseidObj, idObject) {
chbox = document.getElementById(sourseidObj);
if (chbox.checked) {
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = yyyy + '-' + mm + '-' + dd;
document.getElementById(idObject).value = today;
}
else {
document.getElementById(idObject).value = null;
}
}
//Установка текущей даты
function stateDate(idObject) {
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = yyyy + '-' + mm + '-' + dd;
document.getElementById(idObject).value = today;
}
// Обновление списка улиц после выбора города
$(function () {
$("#CityId").change(function () {
var formData = { 'CityId': Number.parseInt($('#CityId').val()), 'Name': $('#CityId>option:selected').text() };
$.ajax({
url: "http://localhost:18246/api/API/searchStreets",
headers:
{
'Accept': 'application/json',
'Content-Type': 'application/json',
'RequestVerificationToken': $('#RequestVerificationToken').val()
},
type: 'POST',
dataType: "json",
data: JSON.stringify(formData),
success: function (data) {
dataFilling(data, 'idStreet', 'name', '#StreetId', '<option/>');
},
error: function (result, status, er) {
alert("error: " + result + " status: " + status + " er:" + er);
}
});
});
});
// Обновление списка домов после выбора улицы
$(function () {
$("#StreetId").change(function () {
var formData = { 'IdStreet': Number.parseInt($('#StreetId').val()), 'Name': $('#StreetId>option:selected').text() };
$.ajax({
url: "http://localhost:18246/api/API/searchHouse",
headers:
{
'Accept': 'application/json',
'Content-Type': 'application/json',
'RequestVerificationToken': $('#RequestVerificationToken').val()
},
type: 'POST',
dataType: "json",
data: JSON.stringify(formData),
success: function (data) {
dataFilling(data, 'idHouse', 'name', '#HouseId', '<option/>');
},
error: function (result, status, er) {
alert("error: " + result + " status: " + status + " er:" + er);
}
});
});
});
//Заполнение объекта html данными из json массива
function dataFilling(data, nameProperty1, nameProperty2, idObject, propertyHtml) {
var objectHtml = $(idObject);
objectHtml.empty();
$.each(data, function (index, dataInstance) {
objectHtml.append($(propertyHtml,
{
value: dataInstance[nameProperty1],
text: dataInstance[nameProperty2]
}));
});
}
Но при запуске проекта эти изменения не применяются - в режиме разработчика отображаются все те же только 2-е функции и соответственно работают только они

Ответы (1 шт):
Google Chrome множество файлов сохраняет в кеш, где они хранятся определённое время, обычно сутки. Новые изменения в вашем js-файле никак не отображаются, так как файл с таким же расположением и названием уже хранится в кеше.
Чтобы отключить хранение кеша в Google Chrome, необходимо зайти в инструменты разработчика (ПКМ -> Посмотреть код) и затем во вкладке Network поставить галочку на Disable cache:
