MVCアプリケーションをクエリすると、コードが実行され、関連するデータが返されますが、システムの別の部分を使用して数秒後にデータを追加すると、元のユーザーが同じセッションにあるため、コードは、コントローラがキャッシュされた結果を戻しているかのようにデータベースに再照会されないため、さまざまな結果を戻します。それらがログアウトしてブラウザを閉じてから再び開始すると、新しい結果が得られます。ASP.Net MVCスクリプトが常時動作しない
データベースを常に再クエリできるようにするにはどうすればよいですか?
CSHTMLコード:
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
<script async type="text/javascript">
$(function() {
$("#SelecteZoneId").on("change", function() {
var zoneId = $(this).val();
var vrnUrl = "@Url.Action("GetVRNListForZone", "Check")?zoneId=" + zoneId;
$.get(vrnUrl, function (data) {
var $vehicleList = $("#vehicles");
$("#vehicles").find(".list-group-item").remove();
$.each(data, function (idx, item) {
$vehicleList.append("<li class=\"list-group-item\">" + item + "</list>");
});
});
});
$("#search").on("click", function() {
var vrnVal = $("#vrn-id").val();
var vrnUrl = "@Url.Action("GetVehicle", "Check")?vrn=" + vrnVal;
$.get(vrnUrl, function (data) {
$("#vehicle").find("li:eq(0)").html("<label>VRN: </label>");
$("#vehicle").find("li:eq(1)").html("<label>Is Shared Vehicle: </label>");
$("#vehicle").find("li:eq(2)").html("<label>Permit: </label>");
$("#vehicle").find("li:eq(3)").html("<label>Permit Valid In Zones: </label>");
$("#vehicle").find("li:eq(4)").html("<label>Last Parked: </label>");
if (!!data) {
$("#vehicle").find("li:eq(0)").html("<label>VRN: </label>" + data["VRN"]);
$("#vehicle").find("li:eq(1)").html("<label>Is Shared Vehicle: </label>" + data["IsSharedVehicle"]);
$("#vehicle").find("li:eq(2)").html("<label>Permit: </label>" + data["PermitNr"]);
$("#vehicle").find("li:eq(3)").html("<label>Permit Valid In Zones: </label>" + data["Zones"]);
$("#vehicle").find("li:eq(4)").html("<label>Last Parked: </label>" + data["pDate"]);
}
});
});
});
</script>
は.csコード:
public JsonResult GetVRNListForZone(int? zoneId)
{
JsonResult json = null;
IList<string> vrnList = null;
if (zoneId == null)
{
vrnList = DbContext.tblSessions
.Where(x => x.CouncilId == Council.Id && !x.ExpireTicket && this.EndOfDayYesterday < x.ParkedOn)
.Select(v => v.tblVehicle.RegistrationNumber).ToList();
}
else
{
vrnList = DbContext.tblSessions
.Where(x => x.ZoneId == zoneId.Value && !x.ExpireTicket && this.EndOfDayYesterday < x.ParkedOn)
.Select(v => v.tblVehicle.RegistrationNumber).ToList();
}
if (vrnList.Any())
{
json = Json(vrnList, JsonRequestBehavior.AllowGet);
}
return json;
}
public JsonResult GetVehicle(string vrn)
{
JsonResult json = null;
var endOfPreviousDay = DateTime.Now.AddDays(-1).EndOfDay();
var session = DbContext.tblSessions.Include(x => x.tblPermit)
.Where(x => x.CouncilId == Council.Id && x.tblVehicle.IsActive && x.tblVehicle.RegistrationNumber == vrn)
//.Where(x => x.CouncilId == Council.Id && x.tblVehicle.IsActive && x.tblVehicle.RegistrationNumber == vrn && endOfPreviousDay < x.ParkedOn)
.OrderByDescending(x => x.ParkedOn)
.FirstOrDefault();
if (session != null)
{
var parkingDetails = new ParkingDetails()
{
SharedVehicleId = session.SharedVehicleId,
PermitId = session.PermitId,
ParkedOn = session.ParkedOn,
PermitSn = session.tblPermit.PermitSn
};
var zones = session.tblPermit.tblZones.Select(x => x.ZoneName).ToList();
string isSharedVehicle = "Yes";
if (parkingDetails.SharedVehicleId == null)
{
isSharedVehicle = "No";
}
json = Json(new
{
VRN = vrn.ToUpper() + ((session.PdParking) ? " (P+D Parking)" : ""),
IsSharedVehicle = isSharedVehicle,
PermitNr = parkingDetails.PermitSn,
Zones = string.Join(", ", zones),
pDate = parkingDetails.ParkedOn.ToString("dd/MMM/yyyy")
}, JsonRequestBehavior.AllowGet);
return json;
}
var vehicle = DbContext.tblUserVehicles.FirstOrDefault(u => u.tblVehicle.RegistrationNumber == vrn && u.tblUser.IsActive);
if (vehicle != null)
{
var userData = Council.tblUsers.FirstOrDefault(u => u.Id == vehicle.IdUser && u.IsActive);
if (userData != null)
{
var permit = DbContext.tblPermits.Find(userData.ActivePermit);
var parkingDetails = new ParkingDetails()
{
SharedVehicleId = 0,
PermitId = permit.Id,
PermitSn = permit.PermitSn
};
var zones = permit.tblZones.Select(x => x.ZoneName).ToList();
json = Json(new
{
VRN = vrn.ToUpper(),
IsSharedVehicle = "No",
PermitNr = parkingDetails.PermitSn,
Zones = string.Join(", ", zones),
pDate = ""
}, JsonRequestBehavior.AllowGet);
return json;
}
}
json = Json(new
{
VRN = "Not Found",
IsSharedVehicle = "No",
PermitNr = "",
Zones = "",
pDate = ""
}, JsonRequestBehavior.AllowGet);
return json;
}
読む[尋ねる]とタイトルに –