我如何得到我的jQuery变量显示页面刷新后?



我在jQuery中有一个名为storedDealer的变量,我想在选择下拉项时填充选项文本:

var storedDealer = '';
$(document).ready(function () {
let dealerId = @Model.DealerID;
if (0 < dealerId.length) {
$("#DealerID option[value='dealerId'']").attr('selected', 'selected');
$('#dealershipName').val(storedDealer);
}
$('#DealerID').on("change", function () {
storedDealer = this.value;
});
});
function getDealers(el) {
$.get("@Url.Action("GetDealers", "Admin")?region=" + $(el).val(), function (res) {
var markup = "";
for (var i = 0; i < res.length; i++) {
markup += '<option value='+res[i].Value+'>'+res[i].Text+"</option>"
}
$('#DealerID').prop('disabled', false);
$("#DealerID").html(markup).show();
});
}

我的HTML有一点c# Razor代码,这是唯一定义DealerID的地方。我增加了<var id="dealershipName">项:

<tr>
<td align="right">Dealership:</td>
<td>@Html.DropDownListFor(m => m.DealerID, new List<SelectListItem>())</td>
<td><var id="dealershipName" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit" /></td>
<td></td>
</tr>

我不认为Razor变量在jQuery中是可见的,但它们似乎可以工作。

但是当提交搜索时,页面刷新。现在下拉列表被重置,<var>字段为空。

<var>字段是我添加的,我正试图开始工作。

我怎么能得到值停留后的表单重新加载?

我认为你可以尝试使用Session,这里是一个demo .net .每次选择的值被改变,改变storedDealer和会话数据。当刷新页面时,如果会话数据不为空,则storedDealer将设置为会话数据:

Program.cs:

builder.Services.AddControllersWithViews();
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromDays(1);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});

动作:

public IActionResult Test(){
return View();
}
public void SetSession(string storedDealer) {
HttpContext.Session.SetString("storedDealer", storedDealer);
}
测试观点:

var storedDealer = "";
$(document).ready(function () {
let dealerId = @Model.DealerID;
if (0 < dealerId.length) {
$("#DealerID option[value='dealerId'']").attr('selected', 'selected');
if(storedDealer==""&&"@(string.IsNullOrEmpty(Context.Session.GetString("storedDealer")))"!=True)
{
storedDealer = "@Context.Session.GetString("storedDealer")";
}
$('#dealershipName').val(storedDealer);
}
$('#DealerID').on("change", function () {
storedDealer = this.value;
$.ajax({
type: "GET",
url: "SetSession",
data: {storedDealer:$("#IdSelectIdEmpleado").val()},
});
});
});