我在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()},
});
});
});