如何从选定的下拉列表中获取另一个值
Posted
技术标签:
【中文标题】如何从选定的下拉列表中获取另一个值【英文标题】:How to get another value from the selected dropdownlist 【发布时间】:2021-11-27 12:35:39 【问题描述】:我有项目的课程
public class Project
public int Id get; set;
public string Name get; set;
public string Description get; set;
然后,它使用下拉列表显示
@html.DropDownListFor(model => model.Id,
new SelectList(Model.Projects, "Id", "Name", Model.Id),
"-- Select --",
new @class = "form-control" )
如果我选择了一个项目,我可以得到Id和Name,但是如何得到描述呢?
<script>
$(function ()
$('#id').change(function ()
alert('id = ' + $('#Id').val() + ', name = ' + $('#Id :selected').text() + ', description = ' + ???);
);
);
</script>
【问题讨论】:
我还会在选择列表项上生成某种 -data-` 属性,因此在您设置@class
的位置以某种方式为-data-description
创建一个新属性,然后将其拉出从那里在您的警报中。我认为DropDownListFor
应该接受字典以及匿名对象类型。所以这样我想你可以传入data-description
的名称,因为new data-description = ""
is not valid c#
我尝试使用data属性,比如@Html.DropDownListFor(model => model.Id, new SelectList(Model.Projects, "Id", "Name", Model.Id), "-- Select --", new @class = "form-control", @data_description = ? )
,但是我不知道如何设置data_description,你能把示例代码发给我吗?
对不起,我不能给出一个完整的答案,有一段时间没有使用 MVC。我想如果我没记错的话,你需要遍历Model.Projects
并创建new SelectListItem
而不是使用new SelectList(
方法。如果您可以遍历每个选择列表项,也许您可以正确设置描述。
哦,我明白了,感谢您的洞察力
【参考方案1】:
有两种方法
如果项目列表非常大,您将不得不创建 API 并使用 ajax 来获取描述。
在 javascript 中从模型中获取项目列表并找到描述
<script>
var projects = @Html.Raw(Json.Encode(Model.Projects));
console.log(JSON.stringify(projects)); //only for test
$(function ()
$('#id').change(function ()
let id= $('#Id').val();
let description = null;
let name = null;
projects.forEach((item) =>
if (item.Id === id)
name= item.Name;
description= item.Description;
break;
);
alert('id = ' + id + ', name = ' + name + ', description = ' + description);
);
</script>
【讨论】:
这个也可以,谢谢 不客气以上是关于如何从选定的下拉列表中获取另一个值的主要内容,如果未能解决你的问题,请参考以下文章
JqGrid 根据另一个 jqgrid 下拉列表中的选定数据在下拉列表中添加值