[英]Passing parameters between a Controller and JavaScript in an ASP.NET Core MVC app?
我有一个带有视图,控制器和一个小的JavaScript文件的ASP.NET Core MVC应用程序。 当用户单击列表框中的项目时,将调用JavaScript函数。 JavaScript调用控制器上的函数,控制器创建SelectedListItem列表,并设置“ Selected”,“ Value”和“ Text”的值。 “已选择”设置为true 。
我注意到的是,当JavaScript函数接收到数据时,所有内容都是正确的,但是'Selected'字段设置为false '我不确定那是怎么回事。 谢谢您的帮助!
视图
<div class="form-group">
@Html.LabelFor(x => Model.SelectedBaselines, htmlAttributes: new { @class = "col-form-label" })
@Html.ListBoxFor(x => Model.SelectedBaselines, new SelectList(Model.BaselinesList, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "baselines", @multiple = true, size = "10", style = "width:200px;" })
@Html.ValidationMessageFor(x => Model.SelectedBaselines, "", new { @class = "text-danger" })
</div>
控制者
public IEnumerable<SelectListItem> GetSelectedBaselines(string meterId)
{
IQueryable<SelectListItem> baselines =
from mlookup in _dbContext.MeterBaselineLookup.AsNoTracking()
join baseline in _dbContext.MeterBaseline on mlookup.MeterBaselineId equals baseline.Id
where mlookup.MeterId == Convert.ToInt32(meterId)
orderby baseline.Id
select new SelectListItem
{
Selected = true,
Value = baseline.Id.ToString(),
Text = baseline.Name
};
return new SelectList(baselines, "Value", "Text");
}
的JavaScript
$('#meters').change(function() {
var url = "/Meters/GetSelectedBaselines";
$.getJSON(url,
{ meterId: $("#meters option:selected").val() },
function(data) {
$('#baselines option').prop('selected', false); // Clear selected baselines
var len = $('#baselines option').length;
for (var i = 1; i <= len; i++) {
$("#baselines option[value=" + i + "]").attr("selected", true);
}
});
});
第四个参数用于存储所选的值,请尝试:
return new SelectList(baselines, "Value", "Text",baselines[0].baseline.Id);
或者只是这样:
return new SelectList(baselines, "Value", "Text");
尝试只返回下面
public IEnumerable<SelectListItem> GetSelectedBaselines(string meterId)
{
IQueryable<SelectListItem> baselines =
from mlookup in _dbContext.MeterBaselineLookup.AsNoTracking()
join baseline in _dbContext.MeterBaseline on mlookup.MeterBaselineId equals baseline.Id
where mlookup.MeterId == Convert.ToInt32(meterId)
orderby baseline.Id
select new SelectListItem
{
Selected = true,
Value = baseline.Id.ToString(),
Text = baseline.Name
};
return baselines ;
}
相关问题参考链接:
https://stackoverflow.com/a/25714016/10201850 https://forums.asp.net/t/1382564.aspx?SelectListItem+losting+select+value+in+View+page
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.